{"item":[{"id":"5aeeaa8c-ad1c-431a-b28e-d7994394a33e","name":"Agent Suggestions","description":{"content":"Get AI-powered reply suggestions for conversations based on context and message history.","type":"text/plain"},"item":[{"id":"ee7238a3-37c9-42bd-add8-bada49a4cb9f","name":"Get Agent Suggestions","request":{"name":"Get Agent Suggestions","description":{"content":"Get AI-powered suggestions for agent based on conversation context.\n\nSearches the knowledge base using recent messages as context and returns\nrelevant suggestions from FAQs, manuals, and past tickets.\n\nArgs:\n    conversation_id: Conversation ID to get suggestions for\n\nReturns:\n    Dict with:\n    - suggestion_id: ID for tracking acceptance\n    - answer: AI-generated response\n    - sources: List of relevant documents/tickets\n    - query: Query used for search\n\n**🔐 Required Scopes:** `conversations:read`\n","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","suggest"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"kb_only\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"detailed_response\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"use_full_conversation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"86587f96-bd8d-4b1f-9944-b2bf8b0f5410","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","suggest"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"kb_only\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"detailed_response\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"use_full_conversation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"answer\": \"Based on our documentation, you can reset your password by...\",\n  \"citations\": [],\n  \"confidence\": 0.85,\n  \"query\": \"how do I reset my password\",\n  \"sources\": [\n    {\n      \"relevance_score\": 0.95,\n      \"title\": \"Password Reset\",\n      \"type\": \"faq\"\n    }\n  ],\n  \"suggestion_id\": \"550e8400-e29b-41d4-a716-446655440000\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"59274623-5794-4d4e-b78a-2a2895bcc25f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","suggest"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"kb_only\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"detailed_response\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"use_full_conversation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9d4c9aca-9912-431f-b8a9-b7511cab5d8e","name":"Accept Suggestion","request":{"name":"Accept Suggestion","description":{"content":"Mark a suggestion as accepted by the agent.\n\nThis tracks which suggestions are helpful for improving the knowledge base.\n\nArgs:\n    suggestion_id: Suggestion ID to mark as accepted\n    accepted_source_id: Optional ID of the specific source that was used\n    ai_answer_event_id: The event id returned by /suggest. Pass it so the\n        acceptance lands on the right event and the FAQ entries behind the\n        answer get credited (times_in_sent_reply). Omitted, the event is\n        matched back from the suggestion's conversation + query.\n\nReturns:\n    Success message\n\n**🔐 Required Scopes:** `conversations:update`\n","type":"text/plain"},"url":{"path":["api","v1","suggestions",":suggestion_id","accept"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"accepted_source_id","value":"string"},{"disabled":false,"key":"ai_answer_event_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"7d7922d2-d66b-4427-94ec-fb28a660326d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","suggestions",":suggestion_id","accept"],"host":["{{baseUrl}}"],"query":[{"key":"accepted_source_id","value":"string"},{"key":"ai_answer_event_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"suggestion_id\": \"string\",\n  \"ai_answer_event_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5708f21c-2cfe-4f85-bf0d-06164add41a3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","suggestions",":suggestion_id","accept"],"host":["{{baseUrl}}"],"query":[{"key":"accepted_source_id","value":"string"},{"key":"ai_answer_event_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2d02ad92-9879-42c2-a094-74f897ad36a4","name":"Get Suggestion History","request":{"name":"Get Suggestion History","description":{"content":"Get suggestion history for a conversation.\n\nReturns list of previous suggestions made for this conversation.\n\nArgs:\n    conversation_id: Conversation ID\n\nReturns:\n    List of suggestion records\n\n**🔐 Required Scopes:** `conversations:read`\n","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","suggestions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6b93b8a2-0beb-4d60-a2d0-abfd0533c195","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","suggestions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"key_0\": 9017.51718126155,\n    \"key_1\": 9929.16667383195\n  },\n  {\n    \"key_0\": false\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"cbc36e13-d48d-400c-8e92-805c0ddecf0b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","suggestions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5b4ef1d0-6235-4b4e-b100-a6d4e849e658","name":"Search Similar Tickets For Conversation","request":{"name":"Search Similar Tickets For Conversation","description":{"content":"**Retired.** Always returns `410 Gone`.\n\nSimilar ticket search was retired in October 2026 (conversation summaries\nare no longer indexed for search). Summaries are still stored on each\nconversation; list them with `GET /api/v1/knowledge-base/tickets`.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","search-similar-tickets"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"4e88dbc4-9270-477d-b4a4-89c9dc5e8677","name":"AI Agents","description":{"content":"Beta. Create and manage Conversational Agents: persona, instructions, skills, knowledge sources, handoff rules, test console and turn audit log.","type":"text/plain"},"item":[{"id":"3a901e06-9367-4eeb-800c-b982dc750f6a","name":"List Agents","request":{"name":"List Agents","description":{"content":"List Conversational Agents.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"},{"disabled":false,"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6765516a-3dc1-4ce7-8d86-091ca395eed3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d04f0bb5-f34a-41d0-89e1-5f5794124c34","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d9487371-70c4-48ba-bb27-8696fed82630","name":"Create Agent","request":{"name":"Create Agent","description":{"content":"Create a Conversational Agent (backing bot row + agent config, optional\ninline skills and knowledge sources) in one transaction.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","agents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"tools_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"handoff_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_tool_calls\": 3297,\n  \"turn_timeout_ms\": 3592,\n  \"settings\": {\n    \"key_0\": 2242,\n    \"key_1\": true\n  },\n  \"channel_actions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": false,\n  \"language_settings\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 1070.9185428694368,\n    \"key_1\": true,\n    \"key_2\": false,\n    \"key_3\": \"string\"\n  },\n  \"is_active\": true,\n  \"publish\": true,\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c17d953d-1513-494f-aff0-5a096ba1bbb8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"tools_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"handoff_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_tool_calls\": 3297,\n  \"turn_timeout_ms\": 3592,\n  \"settings\": {\n    \"key_0\": 2242,\n    \"key_1\": true\n  },\n  \"channel_actions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": false,\n  \"language_settings\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 1070.9185428694368,\n    \"key_1\": true,\n    \"key_2\": false,\n    \"key_3\": \"string\"\n  },\n  \"is_active\": true,\n  \"publish\": true,\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"language_settings\": {\n    \"response_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_translate_messages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_detection_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"escalation\": {\n    \"enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offers_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_keywords\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_escalation_behavior\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outside_hours_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_escalation_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"max_tool_calls\": 6080,\n  \"turn_timeout_ms\": 3915,\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": 2390\n  },\n  \"tools_config\": {\n    \"key_0\": 2396,\n    \"key_1\": 2440.579250522724\n  },\n  \"handoff_config\": {\n    \"key_0\": \"string\"\n  },\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"channel_actions\": {\n    \"mark_as_read\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"typing_indicator\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"context\": {\n    \"key_0\": \"string\"\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"2020-08-08T03:56:13.794Z\",\n  \"updated_at\": \"1963-06-07T11:23:18.234Z\",\n  \"publish_state\": \"published\",\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-01-28T00:03:41.306Z\",\n  \"published_at\": \"1998-09-27T05:41:50.074Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3b7ea165-e469-48ee-a746-49f71ecd5912","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"tools_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"handoff_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_tool_calls\": 3297,\n  \"turn_timeout_ms\": 3592,\n  \"settings\": {\n    \"key_0\": 2242,\n    \"key_1\": true\n  },\n  \"channel_actions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": false,\n  \"language_settings\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 1070.9185428694368,\n    \"key_1\": true,\n    \"key_2\": false,\n    \"key_3\": \"string\"\n  },\n  \"is_active\": true,\n  \"publish\": true,\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"09e6a792-fe7e-4c21-8616-30697ce7bbb4","name":"Get Agent","request":{"name":"Get Agent","description":{"content":"Get one Conversational Agent.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5522feaf-618e-4846-8650-4aa45a63d9e1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"language_settings\": {\n    \"response_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_translate_messages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_detection_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"escalation\": {\n    \"enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offers_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_keywords\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_escalation_behavior\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outside_hours_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_escalation_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"max_tool_calls\": 6080,\n  \"turn_timeout_ms\": 3915,\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": 2390\n  },\n  \"tools_config\": {\n    \"key_0\": 2396,\n    \"key_1\": 2440.579250522724\n  },\n  \"handoff_config\": {\n    \"key_0\": \"string\"\n  },\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"channel_actions\": {\n    \"mark_as_read\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"typing_indicator\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"context\": {\n    \"key_0\": \"string\"\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"2020-08-08T03:56:13.794Z\",\n  \"updated_at\": \"1963-06-07T11:23:18.234Z\",\n  \"publish_state\": \"published\",\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-01-28T00:03:41.306Z\",\n  \"published_at\": \"1998-09-27T05:41:50.074Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d6be0260-477e-4f7b-8796-fb3747a0fd2e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f47ea1f0-52ad-4df9-8683-b308166728f7","name":"Update Agent","request":{"name":"Update Agent","description":{"content":"Update a Conversational Agent (persona, instructions, tools, handoff,\nlanguage and escalation settings).\n\n``tools_config`` is merged: keys omitted in the request keep their stored\nvalue. The response always carries concrete values for ``read_images``,\n``read_documents``, ``max_images_per_message`` (1-3) and\n``max_attachments_per_conversation`` (1-50). Writing ``read_images`` also\nsets the backing bot's ``vision_enabled``.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"instructions\": \"string\",\n  \"model_tier\": \"advanced\",\n  \"tools_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"handoff_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_tool_calls\": 5388,\n  \"turn_timeout_ms\": 9822,\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\"\n  },\n  \"channel_actions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"language_settings\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"source_footer_enabled\": true,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 8615,\n    \"key_1\": true\n  },\n  \"name\": \"string\",\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9e7633d5-af87-484f-a947-bc7c1379fede","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"instructions\": \"string\",\n  \"model_tier\": \"advanced\",\n  \"tools_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"handoff_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_tool_calls\": 5388,\n  \"turn_timeout_ms\": 9822,\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\"\n  },\n  \"channel_actions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"language_settings\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"source_footer_enabled\": true,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 8615,\n    \"key_1\": true\n  },\n  \"name\": \"string\",\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"language_settings\": {\n    \"response_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_translate_messages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_detection_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"escalation\": {\n    \"enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offers_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_keywords\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_escalation_behavior\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outside_hours_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_escalation_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"max_tool_calls\": 6080,\n  \"turn_timeout_ms\": 3915,\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": 2390\n  },\n  \"tools_config\": {\n    \"key_0\": 2396,\n    \"key_1\": 2440.579250522724\n  },\n  \"handoff_config\": {\n    \"key_0\": \"string\"\n  },\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"channel_actions\": {\n    \"mark_as_read\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"typing_indicator\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"context\": {\n    \"key_0\": \"string\"\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"2020-08-08T03:56:13.794Z\",\n  \"updated_at\": \"1963-06-07T11:23:18.234Z\",\n  \"publish_state\": \"published\",\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-01-28T00:03:41.306Z\",\n  \"published_at\": \"1998-09-27T05:41:50.074Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ede9ee20-ac76-464c-a5f0-44387989fad7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"instructions\": \"string\",\n  \"model_tier\": \"advanced\",\n  \"tools_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"handoff_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_tool_calls\": 5388,\n  \"turn_timeout_ms\": 9822,\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\"\n  },\n  \"channel_actions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"language_settings\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"source_footer_enabled\": true,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 8615,\n    \"key_1\": true\n  },\n  \"name\": \"string\",\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b8756eb4-a1a0-4291-8a87-bf2582ef190e","name":"Delete Agent","request":{"name":"Delete Agent","description":{"content":"Delete a Conversational Agent and its backing bot (rules, sessions, skill\nlinks and knowledge sources go with it). Returns 409 ``agent_in_use`` with\nthe flows while a published or paused flow's run_assistant node targets it.\n\n**Required Scopes:** `automation:delete`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b623bc54-50f6-4ce4-8936-3ef5deabfe4d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"969f983f-0443-43c5-b56a-b0771742b833","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0c5ab81c-75d7-46fb-9863-c7acbccfb23f","name":"Get Agent Draft","request":{"name":"Get Agent Draft","description":{"content":"The editor document: the saved draft (rebased onto the current live\nconfig) or, without a draft, the live config. ``has_unpublished_changes``,\na per-section ``changes`` summary and the publish ``validation`` are\nincluded. Reading never modifies anything.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b94dcda7-8f3a-4c2e-a828-ea7dd9f58c5c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"document\": {\n    \"key_0\": 9455.848371211667\n  },\n  \"live_document\": {\n    \"key_0\": 6903.07888439473\n  },\n  \"publish_state\": \"published\",\n  \"status\": \"draft\",\n  \"flow_targeted\": true,\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-11-14T03:23:55.056Z\",\n  \"draft_updated_by_name\": \"string\",\n  \"published_at\": \"1962-10-26T22:41:09.160Z\",\n  \"published_by_name\": \"string\",\n  \"changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"validation\": {\n    \"errors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warnings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"avatar_display_url\": \"string\",\n  \"widget_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e086ef8c-dea3-4e8d-9fc9-fe7c3eaaf70d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"880a4031-40d5-4396-8680-94036892f48e","name":"Save Agent Draft","request":{"name":"Save Agent Draft","description":{"content":"Save (autosave) the agent draft. Fields left out keep their previous\ndraft value. Validated like the live endpoints (same 422 codes); new\nknowledge sources / channel rules get server ids. The live agent is not\nchanged until ``POST /agents/{id}/publish``. A draft identical to the\nlive config is cleared.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"document\": {\n    \"instructions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tools_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_tool_calls\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"turn_timeout_ms\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"settings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_actions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"persona\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"display_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ai_disclosure_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ai_disclosure_include_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_settings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_footer_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_footer_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_link_params\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_buttons_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_human_button_caption\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_continue_button_caption\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_continue_ack_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_credits_per_conversation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"skills\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"knowledge_sources\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_rules\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"dc90a19c-9804-471d-a2ed-9998b0f3665b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"document\": {\n    \"instructions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tools_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_tool_calls\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"turn_timeout_ms\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"settings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_actions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"persona\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"display_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ai_disclosure_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ai_disclosure_include_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_settings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_footer_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_footer_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_link_params\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_buttons_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_human_button_caption\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_continue_button_caption\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_continue_ack_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_credits_per_conversation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"skills\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"knowledge_sources\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_rules\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"document\": {\n    \"key_0\": 9455.848371211667\n  },\n  \"live_document\": {\n    \"key_0\": 6903.07888439473\n  },\n  \"publish_state\": \"published\",\n  \"status\": \"draft\",\n  \"flow_targeted\": true,\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-11-14T03:23:55.056Z\",\n  \"draft_updated_by_name\": \"string\",\n  \"published_at\": \"1962-10-26T22:41:09.160Z\",\n  \"published_by_name\": \"string\",\n  \"changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"validation\": {\n    \"errors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warnings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"avatar_display_url\": \"string\",\n  \"widget_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c8000f33-6541-4273-b08f-3d127422c122","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"document\": {\n    \"instructions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tools_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_tool_calls\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"turn_timeout_ms\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"settings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_actions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"persona\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"display_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ai_disclosure_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ai_disclosure_include_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_settings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_footer_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_footer_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_link_params\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_buttons_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_human_button_caption\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_continue_button_caption\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"greeting_continue_ack_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_credits_per_conversation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"skills\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"knowledge_sources\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_rules\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b184d0bd-6d8b-4fdf-a3ce-1efb03d9c165","name":"Discard Agent Draft","request":{"name":"Discard Agent Draft","description":{"content":"Discard the draft; returns the live config as the editor document.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"0de19d08-81bb-4a1d-9b04-5c4d6660b061","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"document\": {\n    \"key_0\": 9455.848371211667\n  },\n  \"live_document\": {\n    \"key_0\": 6903.07888439473\n  },\n  \"publish_state\": \"published\",\n  \"status\": \"draft\",\n  \"flow_targeted\": true,\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-11-14T03:23:55.056Z\",\n  \"draft_updated_by_name\": \"string\",\n  \"published_at\": \"1962-10-26T22:41:09.160Z\",\n  \"published_by_name\": \"string\",\n  \"changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"validation\": {\n    \"errors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warnings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"avatar_display_url\": \"string\",\n  \"widget_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"360ad88f-a15e-41b8-a30f-0f2a82329b90","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","draft"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae5b5f2b-5cbe-4ca5-9de0-480fc844bad8","name":"Publish Agent","request":{"name":"Publish Agent","description":{"content":"Publish the draft in one transaction. Changes made to the live agent since\nthe draft was started are kept (three-way merge). Without a draft, a\nnever-published agent is simply made live. 422 ``publish_blocked`` lists\nthe blocking issues (``name_missing``, ``ai_disclosure_missing``,\n``goal_invalid``, ``live_source_invalid``, ``skill_missing``).\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"9f0feb90-dad9-4b32-bf7b-affa3d842ca6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"document\": {\n    \"key_0\": 9455.848371211667\n  },\n  \"live_document\": {\n    \"key_0\": 6903.07888439473\n  },\n  \"publish_state\": \"published\",\n  \"status\": \"draft\",\n  \"flow_targeted\": true,\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-11-14T03:23:55.056Z\",\n  \"draft_updated_by_name\": \"string\",\n  \"published_at\": \"1962-10-26T22:41:09.160Z\",\n  \"published_by_name\": \"string\",\n  \"changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"validation\": {\n    \"errors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warnings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"avatar_display_url\": \"string\",\n  \"widget_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"545d7c68-cf17-4d2d-b309-1f8608aad4c2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"972eeaca-0a60-41f5-b0e9-fb20e6142404","name":"Upload Agent Avatar","request":{"name":"Upload Agent Avatar","description":{"content":"Upload an avatar into the agent DRAFT (live after publish). PNG, JPEG or\nWebP, max 2 MB; the content is checked (SVG is rejected). 422\n``invalid_avatar`` otherwise.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) "}]}},"response":[{"id":"2173570e-366a-4e18-a801-08ec58bd1981","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"document\": {\n    \"key_0\": 9455.848371211667\n  },\n  \"live_document\": {\n    \"key_0\": 6903.07888439473\n  },\n  \"publish_state\": \"published\",\n  \"status\": \"draft\",\n  \"flow_targeted\": true,\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-11-14T03:23:55.056Z\",\n  \"draft_updated_by_name\": \"string\",\n  \"published_at\": \"1962-10-26T22:41:09.160Z\",\n  \"published_by_name\": \"string\",\n  \"changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"validation\": {\n    \"errors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warnings\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"avatar_display_url\": \"string\",\n  \"widget_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f8d6cfe2-ccdd-47fa-8159-46df626b63e8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f777d377-6963-4ee9-8ec9-7db4225e6dd4","name":"Replace Agent Skills","request":{"name":"Replace Agent Skills","description":{"content":"Replace the agent's skill links (mode / pinned version / order).\n\nEach link may carry ``sources`` = ``{web_search_mode, live_source_ids,\nlive_mode}`` (per-skill source override, stored in\n``settings.skill_sources``): omitted => keep the stored override, ``null``\n=> remove it. ``live_source_ids`` must be ``live_source`` sources of this\nagent (max 5). Overrides of skills no longer attached are dropped.\n422 ``invalid_skill_sources`` on a bad override.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","skills"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"423a8eca-afc0-4956-acdd-8c3ce89b72d9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skills"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"language_settings\": {\n    \"response_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_translate_messages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_detection_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"escalation\": {\n    \"enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offers_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_keywords\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_escalation_behavior\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outside_hours_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_escalation_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"max_tool_calls\": 6080,\n  \"turn_timeout_ms\": 3915,\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": 2390\n  },\n  \"tools_config\": {\n    \"key_0\": 2396,\n    \"key_1\": 2440.579250522724\n  },\n  \"handoff_config\": {\n    \"key_0\": \"string\"\n  },\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"channel_actions\": {\n    \"mark_as_read\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"typing_indicator\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"context\": {\n    \"key_0\": \"string\"\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"2020-08-08T03:56:13.794Z\",\n  \"updated_at\": \"1963-06-07T11:23:18.234Z\",\n  \"publish_state\": \"published\",\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-01-28T00:03:41.306Z\",\n  \"published_at\": \"1998-09-27T05:41:50.074Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"00dc1097-8199-4647-a85c-d0a21e5dd19e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skills"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"350e537c-07db-46f2-8f75-9f5df5075d41","name":"List Knowledge Sources","request":{"name":"List Knowledge Sources","description":{"content":"List the agent's knowledge sources (bounded, single page).\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"679c9bee-2e3c-43d2-b14e-5b89ab6218c4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c5980c7f-b8d6-4c4a-89b6-8824e4069660","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2d18994e-ae92-4aa5-9a9f-00c6032bc4a7","name":"Create Knowledge Source","request":{"name":"Create Knowledge Source","description":{"content":"Add a knowledge source (KB folder, whole KB, FAQ, web search with a\ndomain allowlist, or ``live_source``: one URL fetched live at answer time,\n``config = {url, match, label, description, ttl_minutes, fetcher, scope}``).\n\nLive sources: at most ``AGENT_LIVE_SOURCES_MAX_PER_AGENT`` (default 10) per\nagent (422 ``live_source_limit``), label unique per agent case-insensitively\n(422 ``live_source_label_taken``), URL must be public http(s) (422\n``invalid_live_source_url`` with ``error_code``).\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"source_type\": \"live_source\",\n  \"kb_folder_id\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": true,\n  \"config\": {\n    \"key_0\": false,\n    \"key_1\": 3298,\n    \"key_2\": true,\n    \"key_3\": \"string\"\n  },\n  \"sort_order\": 1683\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"cfa01bda-3848-4cd2-aa5d-69d446a2b4f3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"source_type\": \"live_source\",\n  \"kb_folder_id\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": true,\n  \"config\": {\n    \"key_0\": true\n  },\n  \"sort_order\": 7438\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"source_type\": \"string\",\n  \"kb_folder_id\": \"string\",\n  \"kb_folder_name\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": true,\n  \"config\": {\n    \"key_0\": 7403\n  },\n  \"sort_order\": 0,\n  \"created_at\": \"1975-09-09T00:28:27.576Z\",\n  \"updated_at\": \"2003-06-12T12:14:50.898Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"13d50944-db4c-49af-8346-fce92aea05c2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"source_type\": \"live_source\",\n  \"kb_folder_id\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": true,\n  \"config\": {\n    \"key_0\": true\n  },\n  \"sort_order\": 7438\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a886cd70-4ebb-4c19-a495-ed7ad3604fd0","name":"Update Knowledge Source","request":{"name":"Update Knowledge Source","description":{"content":"Update a knowledge source. For a ``live_source`` the ``config`` patch is\nmerged over the stored config and re-validated (422 ``invalid_live_source``).\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources",":source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"source_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"kb_folder_id\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": true,\n  \"config\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\",\n    \"key_3\": 2027\n  },\n  \"sort_order\": 1735\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1d92aea1-ca41-4721-866f-7cc8eced9245","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources",":source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"kb_folder_id\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": false,\n  \"config\": {\n    \"key_0\": 9023.806390672504\n  },\n  \"sort_order\": 2458\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"source_type\": \"string\",\n  \"kb_folder_id\": \"string\",\n  \"kb_folder_name\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": true,\n  \"config\": {\n    \"key_0\": 7403\n  },\n  \"sort_order\": 0,\n  \"created_at\": \"1975-09-09T00:28:27.576Z\",\n  \"updated_at\": \"2003-06-12T12:14:50.898Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cc87ebe8-1ee6-4b66-86ff-4a9b1c751463","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources",":source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"kb_folder_id\": \"string\",\n  \"allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_enabled\": false,\n  \"config\": {\n    \"key_0\": 9023.806390672504\n  },\n  \"sort_order\": 2458\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"08497450-0f8a-490b-89a0-c6c06d68ea4a","name":"Delete Knowledge Source","request":{"name":"Delete Knowledge Source","description":{"content":"Remove a knowledge source from the agent. Removing a ``live_source``\nalso removes its id from every per-skill override.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources",":source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"0cd5f9c0-83d0-4ddc-a057-79e67daf47f4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources",":source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b1c87c4d-d914-4e51-9187-95463f7bd342","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","knowledge-sources",":source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2e6d3eee-3450-4c59-b236-42b946d9b8ba","name":"Test Agent","request":{"name":"Test Agent","description":{"content":"Run one test-console turn. Nothing is sent to a customer and nothing is\nbilled (``credits`` reports what a live turn would bill). The turn is\nrecorded in the audit log with surface ``test``. Rate limited to 20\nturns per minute and 200 per hour per workspace (429 + Retry-After).\n\n``attachment_ids`` (max 5): files uploaded with ``POST /attachments/upload``\nthat the test customer \"sends\" with the message (``message`` may then be\nempty). Unknown or foreign ids return 422 ``attachment_not_found``. The\n``attachments`` trace lists each file as read or skipped (with the reason)\nand the AI credits it would cost in a live conversation.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message\": \"\",\n  \"history\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"state\": {\n    \"key_0\": 7032,\n    \"key_1\": 3193.1387228312615\n  },\n  \"skill_slug\": \"string\",\n  \"channel_type\": \"string\",\n  \"task\": {\n    \"key_0\": 7086,\n    \"key_1\": 5046.230287339007,\n    \"key_2\": 5482.80284759427\n  },\n  \"attachment_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"config\": \"live\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f175cdad-6d39-4779-a82b-21a936087f0c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message\": \"\",\n  \"history\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"state\": {\n    \"key_0\": 7032,\n    \"key_1\": 3193.1387228312615\n  },\n  \"skill_slug\": \"string\",\n  \"channel_type\": \"string\",\n  \"task\": {\n    \"key_0\": 7086,\n    \"key_1\": 5046.230287339007,\n    \"key_2\": 5482.80284759427\n  },\n  \"attachment_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"config\": \"live\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"outcome\": \"string\",\n  \"replies\": [\n    {\n      \"key_0\": 1016.92718874263\n    },\n    {\n      \"key_0\": 8443.88026214925\n    }\n  ],\n  \"outputs\": {\n    \"key_0\": \"string\",\n    \"key_1\": 3121.4921256282046\n  },\n  \"handoff\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\"\n  },\n  \"engine_trace\": [\n    {\n      \"key_0\": 54.678745127234585,\n      \"key_1\": 7118.348568495324\n    },\n    {\n      \"key_0\": 2348.960144710055,\n      \"key_1\": 2617\n    }\n  ],\n  \"credits\": {\n    \"key_0\": true\n  },\n  \"state\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\"\n  },\n  \"turn_id\": \"string\",\n  \"model\": \"string\",\n  \"router\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"skills_loaded\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tool_calls\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"link_fixes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"checks\": {\n    \"key_0\": 4785\n  },\n  \"sources\": [\n    {\n      \"key_0\": \"string\",\n      \"key_1\": false\n    },\n    {\n      \"key_0\": 6314.614921857379,\n      \"key_1\": \"string\",\n      \"key_2\": \"string\"\n    }\n  ],\n  \"duration_ms\": 9740,\n  \"goal_progress\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\"\n  },\n  \"config\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"676dd7a6-5e7f-4a3f-a1d4-baa1aba83b72","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message\": \"\",\n  \"history\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"state\": {\n    \"key_0\": 7032,\n    \"key_1\": 3193.1387228312615\n  },\n  \"skill_slug\": \"string\",\n  \"channel_type\": \"string\",\n  \"task\": {\n    \"key_0\": 7086,\n    \"key_1\": 5046.230287339007,\n    \"key_2\": 5482.80284759427\n  },\n  \"attachment_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"config\": \"live\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"70c90f53-6ff6-44c9-aa9c-38d968514d0b","name":"List Agent Turns","request":{"name":"List Agent Turns","description":{"content":"Audit log of the agent's turns (newest first). Raw model contents are not\nreturned. ``contact_name`` and the conversation / message ids are only\nreturned for conversations the caller can open in the inbox; otherwise\nthey are null and ``contact_hidden`` is true (``conversation_key`` still\ngroups the turns of one conversation).\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","turns"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"},{"disabled":false,"key":"conversation_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7f2b3642-f2dc-483a-ab16-1d43fe917bc7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","turns"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"conversation_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"821e0927-1c9f-43a4-80df-665fb6927556","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","turns"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"conversation_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ac81f486-5efd-4dc2-a2ec-1710c8a4b6e8","name":"Get Agent Feedback","request":{"name":"Get Agent Feedback","description":{"content":"Answer feedback for an agent: 👍 / 👎 / wrong counts (total, per skill and\nper day) and the newest 👎 / wrong ratings with the customer question, the\nagent's answer, the correction, the skill(s) used and the KB correction it\nopened. Without inbox access to a rating's conversation, its\n``conversation_id``, ``message_id``, ``question`` and ``answer`` are null\nand ``contact_hidden`` is true. Ratings themselves are submitted with\n``POST /ai-answers/{event_id}/rate``, the same endpoint as FAQ bot replies.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","feedback"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Window in days (answer events are kept 90 days)"},{"disabled":false,"key":"skill","value":"string","description":"Limit series + recent to one skill slug (\"__none__\" = no skill)"},{"disabled":false,"key":"recent_limit","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"372f6933-e921-4403-959d-07dd0154a426","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","feedback"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"},{"key":"skill","value":"string"},{"key":"recent_limit","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"days\": 6032,\n  \"totals\": {\n    \"up\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"down\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"wrong\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rated\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"answers\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"skill\": \"string\",\n  \"by_skill\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"series\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recent\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"truncated\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f74cfb54-d643-41da-b86b-546b0ae0e6cf","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","feedback"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"},{"key":"skill","value":"string"},{"key":"recent_limit","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8dd6f840-b05f-41f0-b0b3-eaedc9676324","name":"List Skill Suggestions","request":{"name":"List Skill Suggestions","description":{"content":"\n\n**🔐 Required Scopes:** `automation:read`\n","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"string"},{"disabled":false,"key":"skill_id","value":"string"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"947ca6cf-0cd1-4f45-a9a4-ce512c366ebe","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"string"},{"key":"skill_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": 4644.057761135885,\n  \"key_1\": \"string\",\n  \"key_2\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1bf240de-c506-4634-a3c8-68caf0a4af73","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"string"},{"key":"skill_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"aaa36062-ba0f-46e0-afbb-dc24faca9fc7","name":"Generate Skill Suggestion","request":{"name":"Generate Skill Suggestion","description":{"content":"\n\n**🔐 Required Scopes:** `automation:update`\n","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"skill_id\": \"string\",\n  \"days\": 30\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8f3c07f7-a39e-4704-9e35-8959871eb9a3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"skill_id\": \"string\",\n  \"days\": 30\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": true,\n  \"key_1\": 2295\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9bcf6f90-1420-412a-8f29-944d99e52dbf","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"skill_id\": \"string\",\n  \"days\": 30\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2b9a2652-73f5-4dec-9c19-cf8c52bc72ab","name":"Approve Skill Suggestion","request":{"name":"Approve Skill Suggestion","description":{"content":"\n\n**🔐 Required Scopes:** `automation:update`\n","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions",":suggestion_id","approve"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"instructions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2c499ce5-38c5-4a24-9830-46b0c9af5970","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions",":suggestion_id","approve"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"instructions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5e42a880-0b41-4df9-a087-b1995e0ac13d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions",":suggestion_id","approve"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"instructions\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"732d6e85-539b-4637-869f-f9b2fd773344","name":"Dismiss Skill Suggestion","request":{"name":"Dismiss Skill Suggestion","description":{"content":"\n\n**🔐 Required Scopes:** `automation:update`\n","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions",":suggestion_id","dismiss"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"note\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"dd2745bc-bc2e-4842-981c-2a19e6a3adcb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions",":suggestion_id","dismiss"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"note\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": \"string\",\n  \"key_1\": false,\n  \"key_2\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7ddea683-d912-4e2b-b5ca-ca8b3e1871c1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","skill-suggestions",":suggestion_id","dismiss"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"note\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b2ecf07e-1d8d-4812-8242-374dd625cd5e","name":"Get Agents Insights Overview","request":{"name":"Get Agents Insights Overview","description":{"content":"Workspace-wide agent insights for the last ``days`` days: goal funnel per\nskill (activations started / completed), skills by usage (turns that\nloaded the skill, number of agents) and the number of knowledge-gap FAQ\ndrafts waiting for review. Test-console turns are excluded.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents","insights","overview"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Window in days: 7, 30 or 90"},{"disabled":false,"key":"agent_id","value":"string","description":"Only this agent's turns and knowledge-gap drafts"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"654bc76e-f80a-4d8f-b79d-e072d5bf1d67","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents","insights","overview"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"},{"key":"agent_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"range_days\": 7512,\n  \"goals\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"skills_by_usage\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"kb_gaps\": {\n    \"pending_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"truncated\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"56dc5d8f-ff31-47dc-9983-090636bbfaad","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents","insights","overview"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"},{"key":"agent_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c414d559-76b1-49e0-8c4f-4690cd0fa6cd","name":"Get Agent Analytics","request":{"name":"Get Agent Analytics","description":{"content":"Agent analytics over the last ``days`` calendar days (workspace timezone,\ntoday included): turn outcomes, KB / web / live-source usage, enforced\nlookups, answer-check (grounding) results, credits, and a zero-filled\ndaily series. Test-console turns and plan-gated turns are excluded. At\nmost 20,000 turns are aggregated (``truncated: true`` beyond).\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","analytics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Window in days: 7, 30 or 90"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3392f59d-8fbb-40b9-a75b-26a0f20568c7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"days\": 6961,\n  \"from\": \"string\",\n  \"to\": \"string\",\n  \"totals\": {\n    \"turns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"answered\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoffs\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fallbacks\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"errors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_searches\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_zero_hit_turns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_search_turns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"web_searches\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"web_turns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"web_cache_hits\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"live_reads\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"live_turns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"enforced_lookups\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"grounding_checked\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"grounding_rewrites\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"grounding_handoffs\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"credits_billed\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"resolved_conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"rates\": {\n    \"web_fallback_rate\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_zero_hit_rate\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_rate\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"grounding_rewrite_rate\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"resolved_pct\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_pct\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"timezone\": \"UTC\",\n  \"truncated\": false,\n  \"min_sample\": 20,\n  \"insufficient_data\": false,\n  \"credits_per_conversation\": 8219.477417622187,\n  \"daily\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2e54c978-2252-487c-9916-84cbf162bcf7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"27b2c4ea-c2b4-4cb6-a57b-4922efa9c8a0","name":"Run Kb Gap Suggestions","request":{"name":"Run Kb Gap Suggestions","description":{"content":"Draft FAQ entries for questions this agent recently answered from web\nsearch while the knowledge base had nothing. Drafts land in the FAQ review\nlist (status ``draft``) and are never published automatically. One run per\nagent at a time (409 ``gap_run_in_progress``).\n\n**Required Scopes:** `automation:update` AND `knowledge_base:create` (it writes FAQ drafts)","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","kb-gap-suggestions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"days\": 30\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0593a61d-7711-4770-b427-c40a3c8fdb50","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","kb-gap-suggestions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"days\": 30\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created\": 0,\n  \"skipped_existing\": 0,\n  \"skipped_volatile\": 0,\n  \"candidates\": 0,\n  \"draft_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bfe33200-01df-4702-85d5-f4f1c1bf8e70","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","kb-gap-suggestions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"days\": 30\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"72c4e7c8-e1cb-46be-b711-bf93b4419e3b","name":"List Kb Gap Suggestions","request":{"name":"List Kb Gap Suggestions","description":{"content":"FAQ drafts created from this agent's knowledge gaps (not archived), newest\nfirst.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","agents",":agent_id","kb-gap-suggestions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"67efa45e-d7c0-4e7d-b6c9-ec7afe37d412","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","kb-gap-suggestions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e04341a1-2973-4bb8-949f-18b29c26fdd3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agents",":agent_id","kb-gap-suggestions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"agent_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"498f77bd-f951-46f1-a364-7ca5719bdb36","name":"Estimate Agent Build","request":{"name":"Estimate Agent Build","description":{"content":"AI credits one successful AI agent build costs — shown before the user starts.\n\nPrice = credits x the plan's AI-credit rate. Failed builds and creating the\nagent are never charged.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","agent-builder","estimate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"81f05c48-1b9e-4089-8a81-85e6d395605c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","estimate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"credits\": 647,\n  \"price_euros\": \"string\",\n  \"ai_credit_rate_euros\": \"string\",\n  \"billable\": false,\n  \"charged_on\": \"successful_build\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7cc91249-da42-4f23-9a11-0792657e747e","name":"Generate Agent Draft","request":{"name":"Generate Agent Draft","description":{"content":"Queue an AI agent build: research the company website (domain-restricted web\nsearch; up to 3 of its pages are read to propose live sources) and draft a\nfoundation skill plus 3-6 tailored skills. Poll ``/jobs/{job_id}``. Nothing is saved.\n\nLimits per workspace: 5 builds/hour, 20/day, one active build at a time.\nRepeating a request with the same ``request_id`` returns the same job and is\nnever charged twice.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","agent-builder","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"company_name\": \"string\",\n  \"goals\": [\n    \"human_handoff\"\n  ],\n  \"tone\": \"enthusiastic\",\n  \"website_url\": \"string\",\n  \"base_language\": \"string\",\n  \"language_mode\": \"auto\",\n  \"languages\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"notes\": \"string\",\n  \"ui_language\": \"string\",\n  \"request_id\": \"MtZrpCMtZrpC\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d40aceb6-88bc-4b09-b529-26ae34a3ebab","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"company_name\": \"string\",\n  \"goals\": [\n    \"human_handoff\"\n  ],\n  \"tone\": \"enthusiastic\",\n  \"website_url\": \"string\",\n  \"base_language\": \"string\",\n  \"language_mode\": \"auto\",\n  \"languages\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"notes\": \"string\",\n  \"ui_language\": \"string\",\n  \"request_id\": \"MtZrpCMtZrpC\"\n}","options":{"raw":{"language":"json"}}}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"status\": \"string\",\n  \"stage\": \"string\",\n  \"result\": {\n    \"key_0\": false\n  },\n  \"error\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"request_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f325e5e9-9684-4705-8d62-95a685b0ee8f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"company_name\": \"string\",\n  \"goals\": [\n    \"human_handoff\"\n  ],\n  \"tone\": \"enthusiastic\",\n  \"website_url\": \"string\",\n  \"base_language\": \"string\",\n  \"language_mode\": \"auto\",\n  \"languages\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"notes\": \"string\",\n  \"ui_language\": \"string\",\n  \"request_id\": \"MtZrpCMtZrpC\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"97b770cb-335d-4c3b-845a-181006364f24","name":"Get Agent Build Job","request":{"name":"Get Agent Build Job","description":{"content":"Poll an AI agent build (kept 24h). Another workspace's job is a 404.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","agent-builder","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1783cbe7-06be-4135-897c-0a7dea0d3692","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"status\": \"string\",\n  \"stage\": \"string\",\n  \"result\": {\n    \"key_0\": false\n  },\n  \"error\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"request_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4cb76675-fabb-4f46-929a-80860ddecf8f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"448993a2-96c0-43ab-910f-4ae5bcce087e","name":"Create Agent From Build","request":{"name":"Create Agent From Build","description":{"content":"Create the reviewed agent from a successful build: its skills (version 1),\nthe agent (INACTIVE — test it, then activate), knowledge sources and the\nchannel activation rule, in one transaction. Idempotent per ``build_id``:\ncalling it again returns the same agent. Not charged.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","agent-builder","create"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"build_id\": \"stringstringstringstringstringstring\",\n  \"agent\": {\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"persona\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"instructions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"supported_languages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tools_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9e82d6b3-ba70-4ab5-94fb-78e486184d1d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","create"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"build_id\": \"stringstringstringstringstringstring\",\n  \"agent\": {\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"persona\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"instructions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"supported_languages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tools_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"language_settings\": {\n    \"response_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_translate_messages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_detection_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"escalation\": {\n    \"enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offers_escalation\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_keywords\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_escalation_behavior\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offline_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outside_hours_message\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_escalation_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_schedule_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"max_tool_calls\": 6080,\n  \"turn_timeout_ms\": 3915,\n  \"persona\": \"string\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"greeting_message\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"instructions\": \"string\",\n  \"model_tier\": \"standard\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": 2390\n  },\n  \"tools_config\": {\n    \"key_0\": 2396,\n    \"key_1\": 2440.579250522724\n  },\n  \"handoff_config\": {\n    \"key_0\": \"string\"\n  },\n  \"settings\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"channel_actions\": {\n    \"mark_as_read\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"typing_indicator\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"context\": {\n    \"key_0\": \"string\"\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"2020-08-08T03:56:13.794Z\",\n  \"updated_at\": \"1963-06-07T11:23:18.234Z\",\n  \"publish_state\": \"published\",\n  \"has_unpublished_changes\": false,\n  \"draft_updated_at\": \"2021-01-28T00:03:41.306Z\",\n  \"published_at\": \"1998-09-27T05:41:50.074Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"328df4c2-2010-4b2e-ba89-5cd16e04e434","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","agent-builder","create"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"build_id\": \"stringstringstringstringstringstring\",\n  \"agent\": {\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"persona\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"instructions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"base_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"supported_languages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tools_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"skills\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"knowledge_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"a79bf92c-21e7-41dc-bbb0-bdd3f2f4aa23","name":"AI Skills","description":{"content":"Beta. Manage the skills library for Conversational Agents. Every content change creates an immutable version; import skills in bulk.","type":"text/plain"},"item":[{"id":"792be8d1-cf70-4d3b-b9d1-64d8ba866956","name":"List Skills","request":{"name":"List Skills","description":{"content":"List the tenant's skills library.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","skills"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"search","value":"string"},{"disabled":false,"key":"include_archived","value":"false"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5c0d22f7-6f36-4c73-be3c-107d4dbe1276","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills"],"host":["{{baseUrl}}"],"query":[{"key":"search","value":"string"},{"key":"include_archived","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c47d22b2-7447-4196-bed2-d351ec34ce6a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills"],"host":["{{baseUrl}}"],"query":[{"key":"search","value":"string"},{"key":"include_archived","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fb5c6528-e296-4a4d-8472-db745b54290d","name":"Create Skill","request":{"name":"Create Skill","description":{"content":"Create a skill (and its version 1). ``slug`` is derived from the title\nwhen omitted; an explicit slug that already exists returns 409.\n\n``goal`` (Beta, optional): structured goal stored on the version. An invalid\ngoal returns 422 ``{\"detail\": {\"code\": \"invalid_goal\", \"errors\": [{path, code,\nmessage}]}}``; 409 ``goal_unavailable`` while goals are not yet available.\n\n``attachment_instruction`` (Beta, optional): what the agent does with a\ncustomer's image or PDF when this skill is loaded --\n``{\"preset\": \"read_text\" | \"describe\" | \"context\" | \"custom\", \"custom_text\"}``\n(``custom_text`` 1-1000 chars, only for ``custom``). Omitted / null = ``context``.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","skills"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"body\": \"string\",\n  \"slug\": \"string\",\n  \"default_mode\": \"model_selected\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": true\n  },\n  \"attachment_instruction\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a997ddcc-6c26-4505-947d-0537fd1d865e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"body\": \"string\",\n  \"slug\": \"string\",\n  \"default_mode\": \"model_selected\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": 6079\n  },\n  \"attachment_instruction\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"slug\": \"string\",\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"string\",\n  \"current_version\": 5887,\n  \"current_version_id\": \"string\",\n  \"is_archived\": false,\n  \"used_by_count\": 0,\n  \"used_by\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"has_goal\": false,\n  \"goal_label\": \"string\",\n  \"created_at\": \"2011-08-30T20:42:34.874Z\",\n  \"updated_at\": \"1989-10-19T08:00:55.602Z\",\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"attachment_instruction\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4d380792-c7af-40c4-b5e5-13fbd4bcb755","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"body\": \"string\",\n  \"slug\": \"string\",\n  \"default_mode\": \"model_selected\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": 6079\n  },\n  \"attachment_instruction\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8bdec07a-3134-48bd-a40b-a1fbc7b44e80","name":"Import Skills","request":{"name":"Import Skills","description":{"content":"Import skills in the seed format ``{slug?, title, description, mode?, skill,\ntool_allowlist?, goal?, attachment_instruction?}`` (an omitted ``goal`` /\n``attachment_instruction`` keeps the existing value on update).\nAn existing slug gets a new version when its content changed (``updated``),\notherwise it is reported as ``unchanged``. Invalid items are reported in\n``errors`` without stopping the others.\n\n**Required Scopes:** `automation:create`, `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","skills","import"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0c3ee491-1b03-4c06-aed6-102bb6814340","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills","import"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"unchanged\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"errors\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a8f9e5db-8967-400a-b02a-a18a4cbf1d9f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills","import"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1e70ac04-f9ce-4cd4-a6bb-abae1b9fa4ec","name":"Get Skill","request":{"name":"Get Skill","description":{"content":"Get a skill including the body of its current version.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"52f456f3-e4d2-459b-9091-560a5d11ba93","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"slug\": \"string\",\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"string\",\n  \"current_version\": 5887,\n  \"current_version_id\": \"string\",\n  \"is_archived\": false,\n  \"used_by_count\": 0,\n  \"used_by\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"has_goal\": false,\n  \"goal_label\": \"string\",\n  \"created_at\": \"2011-08-30T20:42:34.874Z\",\n  \"updated_at\": \"1989-10-19T08:00:55.602Z\",\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"attachment_instruction\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3f1db448-672c-4636-b818-82044cad0b39","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f27eb916-d29e-4c44-9d6e-4213cd5bb817","name":"Update Skill","request":{"name":"Update Skill","description":{"content":"Update a skill. A title, description, body, tool_allowlist, ``goal`` or\n``attachment_instruction`` change (``null`` clears either) creates a new\nimmutable version; an omitted ``goal`` / ``attachment_instruction`` is\ncarried forward. default_mode / is_archived only change the skill.\nInvalid goal → 422 ``invalid_goal`` (see create).\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"flow_only\",\n  \"is_archived\": true,\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": true,\n    \"key_1\": \"string\"\n  },\n  \"attachment_instruction\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"ff7edc45-f191-4280-beb3-4e5fd2a4961b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"model_selected\",\n  \"is_archived\": true,\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": 9352.097683632983,\n    \"key_1\": 8393,\n    \"key_2\": 4393,\n    \"key_3\": 5495\n  },\n  \"attachment_instruction\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"slug\": \"string\",\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"string\",\n  \"current_version\": 5887,\n  \"current_version_id\": \"string\",\n  \"is_archived\": false,\n  \"used_by_count\": 0,\n  \"used_by\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"has_goal\": false,\n  \"goal_label\": \"string\",\n  \"created_at\": \"2011-08-30T20:42:34.874Z\",\n  \"updated_at\": \"1989-10-19T08:00:55.602Z\",\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"attachment_instruction\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"53ee9c7a-a3cb-45a2-9bf9-fe43798009c4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"model_selected\",\n  \"is_archived\": true,\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": 9352.097683632983,\n    \"key_1\": 8393,\n    \"key_2\": 4393,\n    \"key_3\": 5495\n  },\n  \"attachment_instruction\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b7703c4d-9619-4007-be73-3c606d558fa6","name":"Delete Skill","request":{"name":"Delete Skill","description":{"content":"Delete a skill. A skill still linked to an agent or referenced by a flow\nis archived instead (``action: \"archived\"``); otherwise it is deleted with\nall its versions (``action: \"deleted\"``).\n\n**Required Scopes:** `automation:delete`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b429c648-df7f-4c87-bd70-eda4f9b1d514","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"action\": \"archived\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4608422c-6987-40d7-8dac-484f62b31a92","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2237d68c-53b4-46ea-aecf-ff5274532003","name":"List Skill Versions","request":{"name":"List Skill Versions","description":{"content":"List a skill's versions (newest first; bodies omitted, see ``body_chars``).\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id","versions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"05d85a74-3135-480d-a471-378effb2b45c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","versions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"162823df-e8a5-4303-816e-1fe7ae6cdcb5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","versions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"62270127-66e5-4af8-b1f6-b9e14a4c1ff2","name":"Get Skill Version","request":{"name":"Get Skill Version","description":{"content":"Get one skill version including its body.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id","versions",":version_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"83b7e1d8-43df-4681-9243-64db98190309","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","versions",":version_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"skill_id\": \"string\",\n  \"version\": 5432,\n  \"body\": \"string\",\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"body_chars\": 0,\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": 534\n  },\n  \"attachment_instruction\": {\n    \"key_0\": 2620.5335432395827,\n    \"key_1\": \"string\"\n  },\n  \"is_current\": false,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"1990-01-30T12:49:18.578Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1ac2250b-6872-4f28-b373-1f901f692cc5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","versions",":version_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a5359994-5f63-48e4-875f-fb99025087fe","name":"Restore Skill Version","request":{"name":"Restore Skill Version","description":{"content":"Restore an old version by copying it into a NEW current version.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id","versions",":version_id","restore"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"e8e5efd6-b7f8-4744-9123-4df51ae1b477","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","versions",":version_id","restore"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"slug\": \"string\",\n  \"title\": \"string\",\n  \"description\": \"string\",\n  \"default_mode\": \"string\",\n  \"current_version\": 5887,\n  \"current_version_id\": \"string\",\n  \"is_archived\": false,\n  \"used_by_count\": 0,\n  \"used_by\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"has_goal\": false,\n  \"goal_label\": \"string\",\n  \"created_at\": \"2011-08-30T20:42:34.874Z\",\n  \"updated_at\": \"1989-10-19T08:00:55.602Z\",\n  \"body\": \"string\",\n  \"tool_allowlist\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"goal\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"attachment_instruction\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"89023e7c-46c8-46fa-ba21-505e998419be","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","versions",":version_id","restore"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5fc5b184-84ad-48b5-93ac-b809d9eaae8f","name":"Get Skill Usage","request":{"name":"Get Skill Usage","description":{"content":"Where a skill is used: linked agents and non-archived flows whose\nrun_assistant node sets this ``skill_slug``.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id","usage"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"58d5fdd6-f083-426e-95bc-5c5ee15918f3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","usage"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agents\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"flows\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"233715b8-5373-432f-981e-9427d09c6a8a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","usage"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"66a857e4-0ad9-4d8b-a819-75aeaee2cdae","name":"Get Skill Goal Stats","request":{"name":"Get Skill Goal Stats","description":{"content":"Goal funnel (Beta) for a skill over the last ``days`` (max 90): distinct goal\nactivations started / completed / handed off, overall and per skill version.\nTest-console turns are excluded.\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","skills",":skill_id","goal-stats"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"355bb6e4-4ae3-4a29-8306-c4510a289bde","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","goal-stats"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"days\": 4243,\n  \"started\": 0,\n  \"completed\": 0,\n  \"handed_off\": 0,\n  \"completion_rate\": 4694.650004616442,\n  \"by_version\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"truncated\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f30e8fe6-6d7b-417c-8e3d-cd0923c9b18a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","skills",":skill_id","goal-stats"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"skill_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"dff38896-6e8f-4266-a838-4d5a43754cfb","name":"Alerts","description":{"content":"Configure channel-health and delivery alerts and manage alert notification settings and history.","type":"text/plain"},"item":[{"id":"af6ed9f8-956a-40c7-b46b-0edcda8a76f0","name":"Get Alert Settings","request":{"name":"Get Alert Settings","description":{"content":"All three config layers + every destination visible to this tenant.\n\n**🔐 Required Scopes:** `alerts:read`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d360802b-7e7a-429f-80c1-0664a89dc983","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"effective_scope\": \"implicit\",\n  \"effective\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"account\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"tenant\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"paid_channels_available\": true,\n  \"paid_channels_reason\": \"ok\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c0018163-2551-46cf-8065-c2656da9f872","name":"Put Alert Settings","request":{"name":"Put Alert Settings","description":{"content":"Upsert the settings row at ``scope``.\n\n``account`` writes the BA-default (applies to every tenant of the billing\naccount); ``tenant`` creates/updates this tenant's all-or-nothing\noverride. Single-row-per-scope is enforced HERE (MySQL treats NULLs as\ndistinct inside the unique constraint).\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"scope","value":"account"}],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"all\",\n  \"severity_matrix\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"type_overrides\": {\n    \"key_0\": \"string\"\n  },\n  \"email_always_on\": true,\n  \"monthly_paid_cap_euros\": 1900.5564058097934\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a3df8ea6-fa65-43a1-9b01-012071db544f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings"],"host":["{{baseUrl}}"],"query":[{"key":"scope","value":"account"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"all\",\n  \"severity_matrix\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"type_overrides\": {\n    \"key_0\": \"string\"\n  },\n  \"email_always_on\": true,\n  \"monthly_paid_cap_euros\": 1900.5564058097934\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"scope\": \"tenant\",\n  \"mode\": \"all\",\n  \"severity_matrix\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"type_overrides\": {\n    \"key_0\": 295.22515632143586,\n    \"key_1\": 2804\n  },\n  \"email_always_on\": true,\n  \"monthly_paid_cap_euros\": 4710.7751554847255,\n  \"tenant_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5369cf44-b6cc-42aa-bcfd-37291a0c35b4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings"],"host":["{{baseUrl}}"],"query":[{"key":"scope","value":"account"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"all\",\n  \"severity_matrix\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"type_overrides\": {\n    \"key_0\": \"string\"\n  },\n  \"email_always_on\": true,\n  \"monthly_paid_cap_euros\": 1900.5564058097934\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d8ab7f9a-f305-4d8f-bf6e-64e28ed2bece","name":"Delete Alert Settings Override","request":{"name":"Delete Alert Settings Override","description":{"content":"Remove this tenant's override — it reverts to the BA default.\n\nTenant-scoped destination rows are kept (inert while no override exists)\nso re-enabling the override restores them.\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","override"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"727c4df2-f001-4da6-9c3f-79c1f672b50a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","override"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bd314ace-a138-49cc-a44b-76463bd8b8bb","name":"Create Alert Destination","request":{"name":"Create Alert Destination","description":{"content":"\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","destinations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel\": \"in_app\",\n  \"scope\": \"account\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"is_enabled\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"137b7c98-572a-4ddd-a70b-641756024280","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel\": \"in_app\",\n  \"scope\": \"account\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"is_enabled\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"scope\": \"account\",\n  \"channel\": \"string\",\n  \"is_enabled\": true,\n  \"tenant_id\": \"string\",\n  \"config\": {\n    \"key_0\": 3305.891257553033,\n    \"key_1\": 334\n  },\n  \"verified_at\": \"2023-06-23T02:07:52.993Z\",\n  \"needs_attention\": false,\n  \"last_error\": \"string\",\n  \"last_used_at\": \"1964-04-17T00:23:53.348Z\",\n  \"created_at\": \"1981-08-30T13:04:14.747Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c276b062-bb50-4ca5-bf78-bedce1cffb24","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel\": \"in_app\",\n  \"scope\": \"account\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"is_enabled\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1bf1b4e4-8767-4ab6-bb7d-4197a1b1aac9","name":"Update Alert Destination","request":{"name":"Update Alert Destination","description":{"content":"\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","destinations",":destination_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"config\": {\n    \"key_0\": false\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"211beb7f-afac-44b2-b473-fa55ba5d2e32","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"config\": {\n    \"key_0\": false\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"scope\": \"account\",\n  \"channel\": \"string\",\n  \"is_enabled\": true,\n  \"tenant_id\": \"string\",\n  \"config\": {\n    \"key_0\": 3305.891257553033,\n    \"key_1\": 334\n  },\n  \"verified_at\": \"2023-06-23T02:07:52.993Z\",\n  \"needs_attention\": false,\n  \"last_error\": \"string\",\n  \"last_used_at\": \"1964-04-17T00:23:53.348Z\",\n  \"created_at\": \"1981-08-30T13:04:14.747Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"28ad4fdc-53b0-4e1e-a4bd-3b9579c81fd0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"config\": {\n    \"key_0\": false\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"aa9e56ab-fafe-4a4b-9be2-59ebdd2db4e8","name":"Delete Alert Destination","request":{"name":"Delete Alert Destination","description":{"content":"\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","destinations",":destination_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"c9756422-1b24-4288-ac21-c4a7e62f70d2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"162e737e-af28-4ab7-bec2-63e8d1aaf353","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6b38a511-6c94-40c6-afbb-fbd34fad2d55","name":"Send Destination Verification","request":{"name":"Send Destination Verification","description":{"content":"Send a one-time code to the destination via ITS OWN channel\n(SMS / WhatsApp / email). Verifying through the same channel doubles as\nthe consent record for utility messages (plan §6.3) — ``verified_at`` is\nonly stamped after the code round-trips against the SAME target value\n(security review #1: the code is bound to the phone/email, not the row).\n\nAbuse limits (#2): per-destination hourly + per-tenant daily send quotas.\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","destinations",":destination_id","send-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"19cf05ca-3345-4407-bc99-818c89c20861","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id","send-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f8af5646-cb1f-489c-bbdf-b30bbb9fb110","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id","send-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"919e4f6a-6315-4d92-85c9-05cfeddeda6e","name":"Verify Destination","request":{"name":"Verify Destination","description":{"content":"\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","destinations",":destination_id","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"code\": \"stri\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b4b7cffb-d319-460c-b9a6-a1653651b9a7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"code\": \"stri\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"180faea2-3294-4395-bbfc-a76a928af878","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings","destinations",":destination_id","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"destination_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"code\": \"stri\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c1fdc00e-c369-4e90-97fe-8304bec5560c","name":"List Alerts","request":{"name":"List Alerts","description":{"content":"Alert history for this tenant (SHARD), newest first.\n\n**🔐 Required Scopes:** `alerts:read`\n","type":"text/plain"},"url":{"path":["api","v1","alerts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"20"},{"disabled":false,"key":"severity","value":"severe"},{"disabled":false,"key":"alert_type","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"757c9c29-14d2-4250-83d1-1bc4b82ea76e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alerts"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"severity","value":"severe"},{"key":"alert_type","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f0af5bd3-1325-4553-adb7-801f77cabf91","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alerts"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"severity","value":"severe"},{"key":"alert_type","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"34a7aaae-4371-4403-9b03-5f8a44af01a1","name":"Send Test Alert","request":{"name":"Send Test Alert","description":{"content":"Send a test alert through the normal dispatch path.\n\nFounder decision #10: test alerts on paid channels are billed like real\nsends. Throttled (security review #3/#8) and the free-text message is\ndropped in favour of a fixed body (security review #12 — customer text\nmust not ride our WABA template / Slack markdown).\n\n**🔐 Required Scopes:** `alerts:update`\n","type":"text/plain"},"url":{"path":["api","v1","alert-settings","test"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6a2427c1-9d24-4956-88ec-378b3a092a68","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","alert-settings","test"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"alert_event_id\": \"string\",\n  \"note\": \"Test alerts are delivered to your configured channels. Paid channels (SMS €0.10, WhatsApp €0.08 per message) are billed like real alerts.\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"90ffd294-bc73-40ee-b009-d073887ddd4a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","alert-settings","test"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"916b068f-f2d9-4b8e-ace0-439a0db6eab1","name":"Analytics","description":{"content":"Access messaging analytics, conversation metrics, and channel performance data.","type":"text/plain"},"item":[{"id":"43755126-fc38-45ab-b2e2-0de6585b2d2b","name":"Get Dashboard Metrics","request":{"name":"Get Dashboard Metrics","description":{"content":"Get dashboard overview metrics\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Total messages (inbound/outbound)\n- Total conversations (open/closed)\n- Total contacts\n- Active channels\n- RCS monthly active recipients (`rcs_monthly_active_recipients`,\n  `rcs_mau_period`): current Europe/Berlin month, for RCS agents billed\n  per monthly active recipient. Their sends are not in the message\n  counts. Null when the workspace has no such agent.","type":"text/plain"},"url":{"path":["api","v1","analytics","dashboard"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics (ISO format)"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics (ISO format)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7a1aefda-3909-424e-9e4d-016b6ec78e2f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","dashboard"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"active_channels\": 3,\n  \"closed_conversations\": 105,\n  \"inbound_messages\": 800,\n  \"open_conversations\": 45,\n  \"outbound_messages\": 700,\n  \"period_end\": \"2026-01-18T00:00:00Z\",\n  \"period_start\": \"2026-01-01T00:00:00Z\",\n  \"total_contacts\": 500,\n  \"total_conversations\": 150,\n  \"total_messages\": 1500\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7fc7bb6a-4d35-493a-945c-170b32b91db6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","dashboard"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b510ac90-8d15-4722-ab2a-73954b49d1d7","name":"Get Messages By Channel","request":{"name":"Get Messages By Channel","description":{"content":"Get message counts grouped by channel type\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- List of {channel_type, message_count}","type":"text/plain"},"url":{"path":["api","v1","analytics","messages","by-channel"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0bc56e27-f6ce-4006-939c-322d30bd1a73","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","messages","by-channel"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"channel_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"channel_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"b71f1b41-af1b-4667-b4ea-3fee7edc68ff","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","messages","by-channel"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fc7d2883-8984-4c50-945b-973f0d2e5f6c","name":"Get Messages Over Time","request":{"name":"Get Messages Over Time","description":{"content":"Get message counts over time\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- List of {date, message_count}","type":"text/plain"},"url":{"path":["api","v1","analytics","messages","over-time"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"},{"disabled":false,"key":"interval","value":"day","description":"Grouping interval (day, hour)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ba0d286a-757d-4958-8d10-6a713c57e61c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","messages","over-time"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"},{"key":"interval","value":"day"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"date\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"inbound\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"date\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"inbound\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"5bd7bb21-1683-47d7-a299-e97ea2b5a895","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","messages","over-time"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"},{"key":"interval","value":"day"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4d92b623-7b15-42b8-9d6c-71c19bceaf3e","name":"Get Response Time Metrics","request":{"name":"Get Response Time Metrics","description":{"content":"Get response time metrics\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Response rate percentage\n- Average response time\n- Conversations with/without response","type":"text/plain"},"url":{"path":["api","v1","analytics","response-time"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"cc976405-a8a4-4938-b031-8c425fe00014","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","response-time"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"average_response_time_minutes\": 5.5,\n  \"by_channel\": [\n    {\n      \"avg_response_minutes\": 4.2,\n      \"channel_type\": \"whatsapp\",\n      \"conversation_count\": 80\n    },\n    {\n      \"avg_response_minutes\": 7.1,\n      \"channel_type\": \"telegram\",\n      \"conversation_count\": 40\n    }\n  ],\n  \"conversations_with_response\": 120,\n  \"conversations_without_response\": 30,\n  \"period_end\": \"2026-01-18T00:00:00Z\",\n  \"period_start\": \"2026-01-01T00:00:00Z\",\n  \"response_rate_percent\": 80,\n  \"total_conversations\": 150\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"234289e8-5828-48a9-8e2a-71cd48b53171","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","response-time"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"26bb381f-7fb0-4966-80c3-a7e053e529fe","name":"Get Resolution Time Metrics","request":{"name":"Get Resolution Time Metrics","description":{"content":"Get resolution time metrics (time from conversation start to close)\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Average resolution time in hours\n- Total closed conversations\n- Per-channel breakdown","type":"text/plain"},"url":{"path":["api","v1","analytics","resolution-time"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b44cad73-bf82-4ed0-ab94-fb60cc79149c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","resolution-time"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"average_resolution_hours\": 2.5,\n  \"by_channel\": [\n    {\n      \"avg_hours\": 2.1,\n      \"channel_type\": \"whatsapp\",\n      \"count\": 60\n    },\n    {\n      \"avg_hours\": 3.2,\n      \"channel_type\": \"email\",\n      \"count\": 45\n    }\n  ],\n  \"period_end\": \"2026-01-18T00:00:00Z\",\n  \"period_start\": \"2026-01-01T00:00:00Z\",\n  \"total_closed_conversations\": 105\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f6e0b460-e2f4-47da-9329-f4c254b57c3f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","resolution-time"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"29fff9b6-806e-43c4-a8fc-86b4144f6c45","name":"Get Time Metrics Over Time","request":{"name":"Get Time Metrics Over Time","description":{"content":"Get response time and resolution time metrics over time for charting\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Timeline with daily averages (response_minutes, resolution_hours)\n- Per-channel breakdown for tooltip display","type":"text/plain"},"url":{"path":["api","v1","analytics","time-metrics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a01da66a-efd6-45c1-bef6-bba43a46e9b1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","time-metrics"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"by_channel\": {\n    \"whatsapp\": [\n      {\n        \"date\": \"2026-01-15\",\n        \"resolution_hours\": 1.9,\n        \"response_minutes\": 3.8\n      }\n    ]\n  },\n  \"period_end\": \"2026-01-18T00:00:00Z\",\n  \"period_start\": \"2026-01-01T00:00:00Z\",\n  \"timeline\": [\n    {\n      \"date\": \"2026-01-15\",\n      \"resolution_hours\": 2.1,\n      \"response_minutes\": 4.5\n    },\n    {\n      \"date\": \"2026-01-16\",\n      \"resolution_hours\": 2.8,\n      \"response_minutes\": 5.2\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"abc4892c-a248-48db-9cdf-edbdc1ce4b28","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","time-metrics"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dc07a3b1-bd32-4995-883e-d858b201629d","name":"Get Agent Performance","request":{"name":"Get Agent Performance","description":{"content":"Get performance metrics by agent\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- List of {user_id, conversation_count, message_count}","type":"text/plain"},"url":{"path":["api","v1","analytics","agents","performance"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8a3a01ad-944c-4dc9-93fc-505fe44f5c3f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","agents","performance"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"7a3fa884-0f77-4b93-8c49-df7540b54534","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","agents","performance"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"79cbb1a2-6238-4bce-88a5-1789f0ab2e52","name":"Get Conversation Stats","request":{"name":"Get Conversation Stats","description":{"content":"Get conversation statistics\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Conversations by status (open/assigned/resolved/closed)\n- Conversations by assignment (assigned/unassigned)\n- new_conversations: total created in the date range\n- resolved_conversations: count with RESOLVED status\n- closed_conversations: count with CLOSED status\n- avg_duration_hours: average conversation duration (creation to close)\n- avg_messages_per_conversation: average messages per conversation","type":"text/plain"},"url":{"path":["api","v1","analytics","conversations","stats"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"bd5130aa-1f84-4258-8837-4c62dd1ef9e0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","conversations","stats"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"avg_duration_hours\": 4.5,\n  \"avg_messages_per_conversation\": 8.2,\n  \"by_assignment\": {\n    \"assigned\": 120,\n    \"unassigned\": 30\n  },\n  \"by_status\": {\n    \"closed\": 105,\n    \"open\": 45\n  },\n  \"closed_conversations\": 105,\n  \"new_conversations\": 150,\n  \"period_end\": \"2026-01-18T00:00:00Z\",\n  \"period_start\": \"2026-01-01T00:00:00Z\",\n  \"resolved_conversations\": 35\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5541ecaa-cc41-4248-a96e-2b93d0836a43","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","conversations","stats"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3542b81b-cb83-49ee-849a-bb52da6def06","name":"Get Link Performance Summary","request":{"name":"Get Link Performance Summary","description":{"content":"Get link tracking performance summary for the dashboard widget.\n\n**Required Scopes:** `analytics:read`\n\n**Database:** SHARD (tracked_links, link_clicks tables)\n\n**Returns:**\n- total_links: Total number of tracked links\n- total_clicks: Total clicks across all links\n- clicks_today: Clicks in the last 24 hours\n- clicks_this_week: Clicks in the last 7 days\n- top_performing_links: Top 5 most clicked links\n- clicks_by_day: Click counts for the last 7 days\n- device_breakdown: Clicks by device type (desktop, mobile, tablet)\n- link_tracking_enabled: Whether link tracking is enabled for this tenant","type":"text/plain"},"url":{"path":["api","v1","analytics","links","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9ee6193d-8baf-4725-b7f8-63a39c183868","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","links","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"active_links_this_week\": 8,\n  \"clicks_by_day\": {},\n  \"clicks_this_week\": 0,\n  \"clicks_today\": 0,\n  \"device_breakdown\": {},\n  \"link_tracking_enabled\": true,\n  \"recent_activity\": [],\n  \"top_performing_links\": [\n    {\n      \"clicks\": 150,\n      \"first_click_at\": \"2026-01-10T10:00:00Z\",\n      \"label\": \"Holiday Promo\",\n      \"last_click_at\": \"2026-01-18T14:30:00Z\",\n      \"original_url\": \"https://example.com/promo\",\n      \"short_code\": \"abc123\"\n    }\n  ],\n  \"total_clicks\": 1500,\n  \"total_links\": 25\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9cbaef5b-4ae3-42d6-8c32-127e0dd90210","name":"Get Ai Performance","request":{"name":"Get Ai Performance","description":{"content":"Get AI/Bot performance metrics for the dashboard.\n\n**Required Scopes:** `analytics:read`\n\n**Database:** SHARD (bot_interaction_logs, bot_conversation_sessions, messages tables)\n\n**Query Parameters:**\n- start_date: Start date for metrics (defaults to 30 days ago)\n- end_date: End date for metrics (defaults to now)\n\n**Returns:**\n- total_bot_messages: Count of messages sent by bots\n- total_manual_messages: Count of outbound messages NOT from bots\n- bot_sessions_count: Total bot conversation sessions\n- avg_confidence_score: Average confidence score (0.0-1.0, multiply by 100 for %)\n- escalation_rate: Percentage of sessions that escalated to human agent\n- period_start: Start of the reporting period (ISO format)\n- period_end: End of the reporting period (ISO format)","type":"text/plain"},"url":{"path":["api","v1","analytics","ai","performance"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2009-04-02","description":"Start date for metrics (YYYY-MM-DD)"},{"disabled":false,"key":"end_date","value":"2009-04-02","description":"End date for metrics (YYYY-MM-DD)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1e040085-0c78-4fa9-a4fa-1f2ffbf92fe8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","ai","performance"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2009-04-02"},{"key":"end_date","value":"2009-04-02"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"avg_confidence_score\": 0.85,\n  \"bot_sessions_count\": 150,\n  \"escalation_rate\": 15.5,\n  \"period_end\": \"2026-01-18T00:00:00Z\",\n  \"period_start\": \"2026-01-01T00:00:00Z\",\n  \"total_bot_messages\": 500,\n  \"total_manual_messages\": 200\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a8626093-6146-4d9a-a6b2-3e7c334d05de","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","ai","performance"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2009-04-02"},{"key":"end_date","value":"2009-04-02"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c9fb9166-d0a9-49e0-ae5d-8520fe1acff7","name":"Get Billing Summary","request":{"name":"Get Billing Summary","description":{"content":"Get billing-aligned analytics summary.\n\n**Required Scopes:** `analytics:read`\n\nUses the EXACT same query logic as the billing aggregation service to ensure\nanalytics numbers match billing 1:1. Breaks down outbound/inbound messages\nby platform, email campaigns by managed vs BYOK, push campaign messages,\nand knowledge base queries.\n\nIf no date range is provided, defaults to the current calendar month.","type":"text/plain"},"url":{"path":["api","v1","analytics","billing-summary"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start of period (ISO format). Defaults to start of current month."},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End of period (ISO format). Defaults to now."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"87474d21-9dcd-45ca-a483-39e1810e4e21","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","billing-summary"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"campaigns\": {\n    \"email_byok\": 2000,\n    \"email_managed\": 5000,\n    \"push\": 1500\n  },\n  \"inbound_messages\": {\n    \"by_platform\": {\n      \"email\": 50,\n      \"instagram\": 15,\n      \"live_chat\": 5,\n      \"messenger\": 20,\n      \"sms\": 30,\n      \"telegram\": 60,\n      \"whatsapp\": 120\n    },\n    \"total\": 300\n  },\n  \"kb_queries\": 450,\n  \"outbound_messages\": {\n    \"by_platform\": {\n      \"browser_push\": 5,\n      \"email\": 40,\n      \"instagram\": 10,\n      \"live_chat\": 10,\n      \"messenger\": 15,\n      \"sms\": 20,\n      \"telegram\": 50,\n      \"whatsapp\": 100\n    },\n    \"total\": 250\n  },\n  \"period_end\": \"2026-03-08T12:00:00Z\",\n  \"period_start\": \"2026-03-01T00:00:00Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b865bd0d-b037-49cc-b449-dd0735be5a37","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","billing-summary"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"29694e54-fb6a-4b5c-a896-89d0132f7386","name":"Get Ctwa Ad Breakdown","request":{"name":"Get Ctwa Ad Breakdown","description":{"content":"Get Click-to-WhatsApp (CTWA) \"Conversations from Ads\" breakdown.\n\n**Required Scopes:** `analytics:read`\n\n**Database:** SHARD (conversation_ad_attribution table)\n\nPurely informational counts — NO cost or ROI data. Aggregates CTWA\nconversations by their originating ad/post (`source_id`) over the date\nrange, ranked by conversation count descending.\n\n**Conditional rendering:** When the tenant has no CTWA conversations in the\nrange, this returns `total_conversations: 0`, `has_data: false`, and an\nempty `ads` list. The frontend hides the \"Conversations from Ads\" section\nwhen `has_data` is false (equivalently `total_conversations == 0`). There is\nno separate presence-check endpoint.\n\nReturns:\n- total_conversations: Total CTWA conversations in range (sum of ad counts)\n- has_data: Convenience flag, true when total_conversations > 0\n- ads: List of {source_id, headline, source_type, source_url, count} ranked desc\n- period_start / period_end: ISO range bounds (defaults filled server-side)","type":"text/plain"},"url":{"path":["api","v1","analytics","ctwa","ad-breakdown"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Start date for metrics (ISO format). Defaults to 30 days ago."},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"End date for metrics (ISO format). Defaults to now."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"67dc893f-6c2b-434c-ad50-06a81819124b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","ctwa","ad-breakdown"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"ads\": [\n    {\n      \"count\": 30,\n      \"headline\": \"Summer Sale — Chat with us on WhatsApp\",\n      \"source_id\": \"120210000000000000\",\n      \"source_type\": \"ad\",\n      \"source_url\": \"https://fb.me/ad/120210000000000000\"\n    },\n    {\n      \"count\": 12,\n      \"source_id\": \"120210000000000001\",\n      \"source_type\": \"post\"\n    }\n  ],\n  \"has_data\": true,\n  \"period_end\": \"2026-06-11T23:59:59.999999Z\",\n  \"period_start\": \"2026-05-12T00:00:00Z\",\n  \"total_conversations\": 42\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5a42acb6-5405-4a2c-bdbb-31cda6cab4d3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","ctwa","ad-breakdown"],"host":["{{baseUrl}}"],"query":[{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"daeacec4-d9e8-4096-806a-f78a49dff6c2","name":"Get Subscriber Overview","request":{"name":"Get Subscriber Overview","description":{"content":"Get subscriber overview with counts by status, channel type, and list.\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Total subscription count\n- Breakdown by status (subscribed, pending, unsubscribed, bounced, complained)\n- Breakdown by channel type with per-status counts\n- Breakdown by list with per-status counts","type":"text/plain"},"url":{"path":["api","v1","analytics","subscribers","overview"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Number of days to look back"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"eb6a7196-5e99-4d7c-9f5c-c83ea08675ae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","subscribers","overview"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"period_start\": \"string\",\n  \"period_end\": \"string\",\n  \"total_subscriptions\": 0,\n  \"by_status\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"by_channel\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"by_list\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4c462103-fd99-4a65-93e5-8d98a998a58e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","subscribers","overview"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d75b4471-08ad-4ede-a13f-756a386e7955","name":"Get Subscriber Trends","request":{"name":"Get Subscriber Trends","description":{"content":"Get subscriber growth trends over time.\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Daily opt-in counts by channel type\n- Daily opt-out counts by channel type\n- Net growth, average daily opt-ins/opt-outs\n- Opt-in method breakdown","type":"text/plain"},"url":{"path":["api","v1","analytics","subscribers","trends"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Number of days to look back"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3d29fa22-b5a5-489e-a96c-a80a02804c62","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","subscribers","trends"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"period_start\": \"string\",\n  \"period_end\": \"string\",\n  \"daily_opt_ins\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"daily_opt_outs\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total_opt_ins\": 0,\n  \"total_opt_outs\": 0,\n  \"net_growth\": 0,\n  \"avg_daily_opt_ins\": 0,\n  \"avg_daily_opt_outs\": 0,\n  \"by_opt_in_method\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"51926ede-9703-4d12-98d2-2ccccc7275b9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","subscribers","trends"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e1ee150d-0ffb-4ec9-b0cf-a70c592a67df","name":"Get Campaign Performance","request":{"name":"Get Campaign Performance","description":{"content":"Get campaign performance analytics.\n\n**Required Scopes:** `analytics:read`\n\nReturns:\n- Aggregate campaign stats (total/completed, sent/delivered/read/failed).\n  Volume tiles are invoiced-aligned: non-email campaigns from\n  campaign_messages + email campaigns from email_campaigns.\n- Delivery and read rates\n- Email breakdown (`email`): single/transactional (1:1, from email_messages)\n  vs campaign/newsletter (from email_campaigns), each aligned to invoiced\n  usage. Legacy flat `email_*` fields mirror `email.campaign.*`.\n- Channel-type breakdown from campaign messages\n- Last 5 completed campaigns","type":"text/plain"},"url":{"path":["api","v1","analytics","campaigns","performance"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Number of days to look back"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a981b984-5bcb-4a26-b64f-1b78596c8172","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","analytics","campaigns","performance"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"by_channel\": [\n    {\n      \"channel_type\": \"email\",\n      \"delivered\": 1950,\n      \"failed\": 50,\n      \"sent\": 2000,\n      \"total_messages\": 2000\n    }\n  ],\n  \"completed_campaigns\": 10,\n  \"delivery_rate\": 96,\n  \"email_bounce_rate\": 2.5,\n  \"email_bounced\": 50,\n  \"email_click_rate\": 25,\n  \"email_clicked\": 200,\n  \"email_complained\": 5,\n  \"email_open_rate\": 40,\n  \"email_opened\": 800,\n  \"email_sent\": 2000,\n  \"period_end\": \"2026-03-08T00:00:00Z\",\n  \"period_start\": \"2026-02-06T00:00:00Z\",\n  \"read_rate\": 66.67,\n  \"recent_campaigns\": [\n    {\n      \"completed_at\": \"2026-03-05T12:00:00Z\",\n      \"delivered_count\": 1480,\n      \"name\": \"March Newsletter\",\n      \"sent_count\": 1500\n    }\n  ],\n  \"total_campaigns\": 12,\n  \"total_delivered\": 4800,\n  \"total_failed\": 200,\n  \"total_read\": 3200,\n  \"total_sent\": 5000\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"dd749a02-c953-4075-b98a-004ea1a90f8f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","analytics","campaigns","performance"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"de1b9681-6e18-4ace-9309-f65229c37b4e","name":"API Tokens","description":{"content":"Create and manage scoped API tokens for programmatic access to the SendSeven API.","type":"text/plain"},"item":[{"id":"1b6c35b4-bcfb-409a-83c5-a664a1f36f5a","name":"List Api Tokens","request":{"name":"List Api Tokens","description":{"content":"List all API tokens for current user in this tenant.\n\n**Required Scopes:** `api:read`\n\nBy default, only shows active (non-expired, non-revoked) tokens.\nSet include_inactive=true to see all tokens.","type":"text/plain"},"url":{"path":["api","v1","api-tokens"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_inactive","value":"false","description":"Include inactive/expired tokens"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1eec1ceb-71fb-4da2-9b2f-4654ca5778a6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens"],"host":["{{baseUrl}}"],"query":[{"key":"include_inactive","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0287efa0-10e9-46c8-ac0f-83d360baa3e7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","api-tokens"],"host":["{{baseUrl}}"],"query":[{"key":"include_inactive","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7abfa840-488c-498f-b51b-c6d5bc112d9e","name":"Create Api Token","request":{"name":"Create Api Token","description":{"content":"Create a new API token.\n\n**Required Scopes:** `api:create`\n\nIMPORTANT: The plaintext token is returned ONLY ONCE.\nSave it securely - you won't be able to retrieve it again.\n\nToken format: s7_api_<32_random_hex_chars>\n\nDefault expiration: 90 days\nMax expiration: 365 days","type":"text/plain"},"url":{"path":["api","v1","api-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"scopes\": [\n    \"string\"\n  ],\n  \"expires_in_days\": 303\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"97329f5b-cc56-474b-8f84-5ddbd275fef1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"scopes\": [\n    \"string\"\n  ],\n  \"expires_in_days\": 303\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"name\": \"string\",\n  \"token\": \"string\",\n  \"created_at\": \"1966-03-08T20:14:06.619Z\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"expires_at\": \"1990-12-17T20:49:18.089Z\",\n  \"warning\": \"Save this token now - it will not be shown again\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2cbc5320-bd70-4d5f-b32c-5544bda3a848","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","api-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"scopes\": [\n    \"string\"\n  ],\n  \"expires_in_days\": 303\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"94b18d4c-e41b-457c-ab76-26054c5f9d4e","name":"Get Available Scopes For Token","request":{"name":"Get Available Scopes For Token","description":{"content":"Get all scopes that the current user can grant to API tokens.\n\n**Required Scopes:** `api:read`\n\nThis endpoint expands wildcard scopes (*:*, resource:*, etc.) to show\nall granular scopes the user can select when creating tokens.\n\nExample:\n- User has ['*:*'] -> Returns all 78 scopes\n- User has ['campaigns:*'] -> Returns all campaigns:* scopes\n- User has ['contacts:read', 'messages:create'] -> Returns exactly those scopes","type":"text/plain"},"url":{"path":["api","v1","api-tokens","available-scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6cdb3732-bbdd-47bb-8b22-fd697803cddf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens","available-scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"grouped\": {\n    \"key_0\": [\n      {\n        \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n      },\n      {\n        \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n      }\n    ],\n    \"key_1\": [\n      {\n        \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n      },\n      {\n        \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n      }\n    ],\n    \"key_2\": [\n      {\n        \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n      },\n      {\n        \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n      }\n    ]\n  },\n  \"total\": 9054\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"71867f7b-fe31-4e90-bbee-dbfed0ecf5e4","name":"Get Api Token","request":{"name":"Get Api Token","description":{"content":"Get details of a specific API token.\n\n**Required Scopes:** `api:read`\n\nNote: The plaintext token is NOT included - it was only shown at creation.","type":"text/plain"},"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"255559fa-102b-4cdb-91f3-d4a138875d38","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1948-04-13T05:46:57.047Z\",\n  \"is_active\": false,\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"last_used_at\": \"2016-06-05T21:15:53.311Z\",\n  \"expires_at\": \"1993-03-02T19:38:00.230Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c5d1b507-9e88-458e-b070-040134febee1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0bf3f066-edd1-4b3d-8a1f-664d8202d6ed","name":"Update Api Token","request":{"name":"Update Api Token","description":{"content":"Update API token metadata.\n\n**Required Scopes:** `api:create`\n\nCan update:\n- name: Change the human-readable name\n- is_active: Revoke (false) or reactivate (true) the token\n\nCannot update (create new token instead):\n- scopes\n- expires_at","type":"text/plain"},"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"is_active\": true,\n  \"name\": \"Updated CI/CD Token\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7e69d1ab-796a-4a17-b079-a58e64be2ceb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"is_active\": true,\n  \"name\": \"Updated CI/CD Token\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1948-04-13T05:46:57.047Z\",\n  \"is_active\": false,\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"last_used_at\": \"2016-06-05T21:15:53.311Z\",\n  \"expires_at\": \"1993-03-02T19:38:00.230Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5b6a27a8-044f-443a-b2bc-6c792d559833","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"is_active\": true,\n  \"name\": \"Updated CI/CD Token\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bccaea7a-c4f8-437e-b903-cb9ea5fc6a77","name":"Revoke Api Token","request":{"name":"Revoke Api Token","description":{"content":"Revoke (delete) an API token permanently.\n\n**Required Scopes:** `api:delete`\n\nThis permanently deletes the token.\nAlternatively, use PATCH to set is_active=false to soft-revoke.","type":"text/plain"},"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e25b44b9-5cfd-40b3-940d-be600d6f948f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"a4e2dab1-a545-4fa6-b694-6293c6becd8d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d1d63efc-c6ff-4c79-b2e2-62bd5ad117b8","name":"Regenerate Api Token","request":{"name":"Regenerate Api Token","description":{"content":"Regenerate an API token (new token string, same scopes).\n\n**Required Scopes:** `api:create`\n\nThis creates a new token string while keeping the same:\n- Name\n- Scopes\n- Expiration date\n\nThe old token is immediately revoked.\nIMPORTANT: Save the new token - it will only be shown once.","type":"text/plain"},"url":{"path":["api","v1","api-tokens",":token_id","regenerate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"6d6ed0ac-440b-46cc-8b99-8a05ea2776bf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id","regenerate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"name\": \"string\",\n  \"token\": \"string\",\n  \"created_at\": \"1966-03-08T20:14:06.619Z\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"expires_at\": \"1990-12-17T20:49:18.089Z\",\n  \"warning\": \"Save this token now - it will not be shown again\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8681aae5-6bdf-4863-8077-545407a5256d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","api-tokens",":token_id","regenerate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"721cbd38-7b08-4ab3-b7f5-58e940da9757","name":"Attachments","description":{"content":"Upload, retrieve, and manage file attachments (images, documents, videos, audio) for messages.","type":"text/plain"},"item":[{"id":"b096ea67-ceac-4073-a191-b956f2376d31","name":"Upload Attachment","request":{"name":"Upload Attachment","description":{"content":"Upload a file attachment\n\nArgs:\n    file: The file to upload\n    message_id: Optional message ID to associate with\n    purpose: Optional. ``agent_test`` marks a Conversational-agent test\n        console upload: deleted after 24 h unless it gets linked to a message.\n\nReturns:\n    Attachment ID and metadata\n\nSecurity:\n    - Validates file extension against blocklist\n    - Validates file magic bytes match claimed MIME type\n    - Enforces file size limits\n\n**🔐 Required Scopes:** `messages:create`\n","type":"text/plain"},"url":{"path":["api","v1","attachments","upload"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"message_id","value":"string"},{"disabled":false,"key":"purpose","value":"string"}],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) "}]}},"response":[{"id":"b7e6ab3b-5b41-432d-ab7e-016705724fe1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments","upload"],"host":["{{baseUrl}}"],"query":[{"key":"message_id","value":"string"},{"key":"purpose","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"filename\": \"string\",\n  \"content_type\": \"string\",\n  \"size\": 7570,\n  \"storage_path\": \"string\",\n  \"download_url\": \"string\",\n  \"attachment_id\": \"string\",\n  \"public_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8e352209-9ec2-4f54-bbe1-93cf0798628e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments","upload"],"host":["{{baseUrl}}"],"query":[{"key":"message_id","value":"string"},{"key":"purpose","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"73073925-840e-49cf-937d-478c047b46ac","name":"Create Attachment From Url","request":{"name":"Create Attachment From Url","description":{"content":"Fetch a public URL server-side and store it as an attachment.\n\nReturns the same shape as ``POST /upload`` so the response is\ninterchangeable. Caller can then pass the returned ``id`` /\n``attachment_id`` in ``MessageCreate.attachments``.\n\nPer-tenant URL dedup: if this tenant already has an attachment\nwhose ``source_url`` matches the requested ``url`` exactly, that\nrow is returned without re-fetching or re-uploading. To force a\nre-fetch, vary the URL (e.g. add ``?t=12345``).\n\nSecurity:\n    - ``http://`` / ``https://`` only — ``file://``, ``gopher://``,\n      ``data://`` etc. rejected.\n    - Hostname resolved up-front; rejected if any A/AAAA record\n      falls into loopback, RFC1918, link-local (incl. cloud\n      metadata 169.254.169.254), ULA, reserved, or multicast.\n    - Bytes validated against the same magic-byte sniffer as\n      ``/upload`` AND against a stricter MIME allowlist\n      (``URL_FETCH_ALLOWED_MIME_TYPES``).\n    - 50 MB hard cap; streaming cut-off enforced even if the\n      server lies in ``Content-Length``.\n\n**Required Scopes:** ``messages:create``","type":"text/plain"},"url":{"path":["api","v1","attachments","from-url"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"https://SVGZfQKltohMkTLaf.aqkboL3TGDFaFuGOQ6nP0,Y64kw5T8FbHAj1H6P7.\",\n  \"filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"fd8b156f-0f99-4d8c-bf04-a79ebf220687","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments","from-url"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"https://SVGZfQKltohMkTLaf.aqkboL3TGDFaFuGOQ6nP0,Y64kw5T8FbHAj1H6P7.\",\n  \"filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"filename\": \"string\",\n  \"content_type\": \"string\",\n  \"size\": 7570,\n  \"storage_path\": \"string\",\n  \"download_url\": \"string\",\n  \"attachment_id\": \"string\",\n  \"public_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3770a472-c3d8-433f-b0ee-16493790ae38","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments","from-url"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"https://SVGZfQKltohMkTLaf.aqkboL3TGDFaFuGOQ6nP0,Y64kw5T8FbHAj1H6P7.\",\n  \"filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"70487613-ab58-4cd5-8b7e-ca339801c48b","name":"Get Attachment","request":{"name":"Get Attachment","description":{"content":"Get attachment metadata\n\nArgs:\n    attachment_id: ID of the attachment\n\nReturns:\n    Attachment metadata including download URL\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","attachments",":attachment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"260254d1-0db7-4152-a85c-9992574277f9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"filename\": \"string\",\n  \"content_type\": \"string\",\n  \"file_size\": 3219,\n  \"url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"35cdd8b7-0b52-47b9-8a5b-638984328040","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b5bc5d48-1171-4f38-9691-aeb3a258d656","name":"Delete Attachment","request":{"name":"Delete Attachment","description":{"content":"Delete an attachment\n\nPermanently removes the ``attachments`` row **and** its stored blob. This\nis irreversible. Attachments are re-usable and carry no foreign key back\nto the messages that referenced them, so deleting one that a previously\nsent message still points at is allowed and expected — the message keeps\nits metadata, the media simply stops resolving.\n\nArgs:\n    attachment_id: ID of the attachment\n\nReturns:\n    ``204 No Content`` on success. ``404`` when the attachment does not\n    exist or belongs to another tenant. ``500`` when the row exists but\n    the delete itself failed (e.g. the storage backend errored) — in that\n    case the row is left intact so the call can be retried.\n\n**Required Scopes:** `messages:delete`","type":"text/plain"},"url":{"path":["api","v1","attachments",":attachment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b4bda3ec-c92a-42a3-8930-dc9fc3e6ec92","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"5a7df95e-100a-475b-b2f5-45c6d517faef","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"58391fb0-37f4-4071-8ebb-4376429b8854","name":"Download Attachment","request":{"name":"Download Attachment","description":{"content":"Download an attachment file\n\nArgs:\n    attachment_id: ID of the attachment\n    disposition: Content-Disposition mode - \"inline\" (default, for viewing in\n        browser) or \"attachment\" (forces download dialog)\n\nReturns:\n    File stream\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","attachments",":attachment_id","download"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"disposition","value":"inline"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2aee15fc-78a2-4b34-9164-8c03827acd1d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","download"],"host":["{{baseUrl}}"],"query":[{"key":"disposition","value":"inline"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ab300fa3-531a-4299-a20e-7fd7aadac8dc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","download"],"host":["{{baseUrl}}"],"query":[{"key":"disposition","value":"inline"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4accf5d2-078c-4957-9e56-9f57aa4e80cd","name":"Get Attachment Url","request":{"name":"Get Attachment Url","description":{"content":"Get a signed URL for an attachment\n\nArgs:\n    attachment_id: ID of the attachment\n    expiration_minutes: URL expiration time in minutes\n\nReturns:\n    Dict with signed URL\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","attachments",":attachment_id","url"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"expiration_minutes","value":"60"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c3d72778-947e-4cea-a591-0fd337e4a9f2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","url"],"host":["{{baseUrl}}"],"query":[{"key":"expiration_minutes","value":"60"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"expires_in_minutes\": 60,\n  \"url\": \"https://storage.googleapis.com/bucket/path?signature=...\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"47321d32-21d4-4dbc-85a0-9d7ca9bcae1b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","url"],"host":["{{baseUrl}}"],"query":[{"key":"expiration_minutes","value":"60"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e1c553d7-17c1-49fd-a624-7956661de7a1","name":"Get Attachment Summary","request":{"name":"Get Attachment Summary","description":{"content":"Get the AI summary of an image or PDF attachment.\n\nReturns the summary a Conversational Agent produced while reading the file,\nor one requested via `POST /attachments/{attachment_id}/summary`. Status\n`pending` means it is still being generated, `failed` means generation\nfailed (a new `POST` may retry). The text is derived from a\ncustomer-supplied file: treat it as untrusted plain text.\n\nErrors: `403 feature_disabled` when AI features are off for the workspace;\n`404` when the attachment is unknown, not visible to you, or has no summary.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0c7b4c5b-398d-4099-af87-1f68a4d49ad7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"status\": \"failed\",\n  \"kind\": \"pdf\",\n  \"source\": \"on_demand\",\n  \"created_at\": \"string\",\n  \"text\": \"string\",\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pages_read\": 3995,\n  \"pages_total\": 7977,\n  \"truncated\": false,\n  \"model\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a50c5c6c-2782-45af-8666-3441d2c1403b","name":"AI features are not enabled for this workspace (`feature_disabled`)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"79583b1b-40f4-4024-b509-fd13f410c9e1","name":"Unknown / inaccessible attachment, or no summary yet (`summary_not_found`)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"c6502d5f-98f4-4db4-b9c3-c0fd8b0bcb37","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dccc340d-4d80-4f1c-bbc3-70d8617b5feb","name":"Summarize Attachment","request":{"name":"Summarize Attachment","description":{"content":"Generate an AI summary of an inbound image or PDF attachment on demand.\n\nOnly for files a customer sent (inbound message), images up to 10 MB and\nPDFs up to 20 MB (the first 10 pages are read). Idempotent: if a summary\nalready exists it is returned with `200` and nothing is charged; if one is\nbeing generated you get `202` (poll `GET /attachments/{attachment_id}/summary`).\nA new summary returns `201` and charges AI credits from the workspace pool\n(image 2, PDF 3, see `credits_charged`). A failed generation returns `502`\n`summary_failed`, charges nothing and may be retried. Request body: none.\n\nErrors: `403 feature_disabled`, `404` unknown/inaccessible attachment,\n`422 attachment_not_summarizable`, `429` rate limit (30/min per principal,\n60/min per workspace), `503 rate_limit_unavailable`.\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"12dbdf3e-50de-4ab1-b258-2d79a3883657","name":"A summary already existed (no credits charged)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"attachment_id\": \"string\",\n  \"summary\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"credits_charged\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"248108c9-caf8-4a33-a249-99b18a5c73da","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"attachment_id\": \"string\",\n  \"summary\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"credits_charged\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3f24b678-40cb-41e8-87e8-07a2fc3d31e5","name":"A summary is already being generated (poll GET)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"attachment_id\": \"string\",\n  \"summary\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"credits_charged\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c219bbf4-690d-4bb8-b375-0223baa758c3","name":"AI features are not enabled for this workspace (`feature_disabled`)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"4318f038-c3cd-4002-9a12-d01d8b362d91","name":"Unknown or inaccessible attachment","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"aab41cfb-b03b-4d0b-8625-9a82dd87b687","name":"Attachment type/size/direction not supported (`attachment_not_summarizable`)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"1e50c006-d44b-4bee-803e-8cd7d241c21e","name":"Rate limit exceeded (30/min per user or API key, 60/min per workspace)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"Too Many Requests","code":429,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"7d543693-865e-4752-9ea1-35515dfb586b","name":"Summary generation failed (`summary_failed`, no credits charged, retry allowed)","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"eef107a8-8739-4f22-aa67-5096ecc4814e","name":"Rate limiter unavailable (`rate_limit_unavailable`), retry shortly","originalRequest":{"url":{"path":["api","v1","attachments",":attachment_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"attachment_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"8913506b-96e6-46fc-aa84-89f926fa3c65","name":"Audit Log","description":{"content":"Retrieve audit and activity events for API requests and user actions.","type":"text/plain"},"item":[{"id":"8e2ec176-fa9c-4c52-9a10-80599a7780b5","name":"List Audit Log","request":{"name":"List Audit Log","description":{"content":"List API audit log entries for the current tenant.\n\nReturns paginated, sanitized records of API calls made against this tenant.\nSorted by most recent first.\n\n**Required Scopes:** `settings:admin`","type":"text/plain"},"url":{"path":["api","v1","audit-log"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"method","value":"string","description":"Filter by HTTP method (GET, POST, etc.)"},{"disabled":false,"key":"status_code","value":"4595","description":"Filter by status code"},{"disabled":false,"key":"path","value":"string","description":"Filter by path (partial match)"},{"disabled":false,"key":"start_date","value":"2025-01-08T09:00:57.148Z","description":"Filter from date (ISO 8601)"},{"disabled":false,"key":"end_date","value":"2025-01-08T09:00:57.148Z","description":"Filter to date (ISO 8601)"},{"disabled":false,"key":"page","value":"1","description":"Page number"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"01e75edd-c59e-4ca6-9af7-90dbf8b5205c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","audit-log"],"host":["{{baseUrl}}"],"query":[{"key":"method","value":"string"},{"key":"status_code","value":"4595"},{"key":"path","value":"string"},{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"08225855-772e-4fd9-aa0c-2f1a119dc3cd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","audit-log"],"host":["{{baseUrl}}"],"query":[{"key":"method","value":"string"},{"key":"status_code","value":"4595"},{"key":"path","value":"string"},{"key":"start_date","value":"2025-01-08T09:00:57.148Z"},{"key":"end_date","value":"2025-01-08T09:00:57.148Z"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"1d5d3e76-d990-42cf-a24d-cbd8defbe3c8","name":"Automation","description":{"content":"Configure automated workflows and message routing rules triggered by events.","type":"text/plain"},"item":[{"id":"52784a60-4bc1-485d-bcbb-52c684eb317d","name":"Get Bot Templates","request":{"name":"Get Bot Templates","description":{"content":"Get available bot templates.\n\nTwo response shapes:\n\n* **No ``language`` param (legacy)** — returns one template per bot_type\n  (Support, Sales, FAQ, …). Used by older UI flows.\n* **With ``language`` param (Phase 2)** — returns the unified assistant\n  preset gallery: 5 presets (support / sales / faq / email / custom),\n  each with a localised personality_prompt + greeting and\n  ``bot_type='assistant'``. Used by the new bot creator (Step 2).\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","templates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"language","value":"string","description":"Optional ISO-639-1 language code (e.g. 'en', 'de'). When provided, returns the Phase-2 assistant preset gallery filtered by language. When omitted, returns the legacy per-bot-type template list."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"140544ed-9c07-4304-ba63-db51fec3d5ad","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","templates"],"host":["{{baseUrl}}"],"query":[{"key":"language","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"key_0\": 6361.683017099826,\n    \"key_1\": 2955,\n    \"key_2\": 3697.767325759401\n  },\n  {\n    \"key_0\": 6058.094920764513,\n    \"key_1\": true\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"7cf72141-b0dd-4377-b8c4-d5cce80ebb5b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","templates"],"host":["{{baseUrl}}"],"query":[{"key":"language","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"45a600be-43d6-49ea-9a55-139f894d269d","name":"Get Bot Template","request":{"name":"Get Bot Template","description":{"content":"Get a specific bot template by type.\n\n**Required Scopes:** `automation:read`\n\nArgs:\n    bot_type: One of 'support', 'sales', 'custom'","type":"text/plain"},"url":{"path":["api","v1","automation","templates",":bot_type"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_type","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4b31f54e-2542-4720-9ad9-f8e6e53d0817","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","templates",":bot_type"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_type","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": 7230,\n  \"key_1\": 3129.232601540697,\n  \"key_2\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fb11040e-d73d-4da8-a6ca-6511a6b71f8c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","templates",":bot_type"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_type","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"03c9f343-1d24-4065-a33a-8438e04fc8d1","name":"Create Bot","request":{"name":"Create Bot","description":{"content":"Create a new automation bot.\n\n**Required Scopes:** `automation:create`\n\nCreate an AI-powered bot that can handle customer conversations\nusing the knowledge base. Configure personality, escalation rules,\nand field collection requirements.\n\nKeyword bots are retired: ``bot_type='keyword'`` returns 422 with\n``detail.code = \"keyword_bots_retired\"``. Use a Flow with a keyword\ntrigger instead. Existing keyword bots keep working.","type":"text/plain"},"url":{"path":["api","v1","automation","bots"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"bot_type\": \"support\",\n  \"is_active\": true,\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"is_kb_only_mode\": true,\n  \"response_language\": \"string\",\n  \"confidence_threshold\": 0.7,\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": true,\n  \"web_search_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 6311,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"cascade\",\n  \"escalation_enabled\": true,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 2,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 0.3,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation_fallback_minutes\": 314,\n  \"max_email_replies\": 8,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": 7279\n  },\n  \"greeting_buttons_enabled\": true,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": true\n  },\n  \"kb_live_refresh_mode\": \"always_live\",\n  \"kb_live_refresh_ttl_seconds\": 310\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d92f0a23-6d17-4190-a373-2bcb39b9db3b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"bot_type\": \"support\",\n  \"is_active\": true,\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"is_kb_only_mode\": true,\n  \"response_language\": \"string\",\n  \"confidence_threshold\": 0.7,\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": true,\n  \"web_search_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 5637,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"cascade\",\n  \"escalation_enabled\": true,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 2,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 0.3,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation_fallback_minutes\": 1080,\n  \"max_email_replies\": 26,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": 7627.337854831928\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 1393.5175946542388\n  },\n  \"kb_live_refresh_mode\": \"off\",\n  \"kb_live_refresh_ttl_seconds\": 1232\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2370def6-f3f7-4a6a-9569-bbdd1052fca3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"bot_type\": \"support\",\n  \"is_active\": true,\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"is_kb_only_mode\": true,\n  \"response_language\": \"string\",\n  \"confidence_threshold\": 0.7,\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": true,\n  \"web_search_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 5637,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"cascade\",\n  \"escalation_enabled\": true,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 2,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 0.3,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation_fallback_minutes\": 1080,\n  \"max_email_replies\": 26,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": 7627.337854831928\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"urls_and_kb\",\n  \"source_link_params\": {\n    \"key_0\": 1393.5175946542388\n  },\n  \"kb_live_refresh_mode\": \"off\",\n  \"kb_live_refresh_ttl_seconds\": 1232\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0be210f9-4ea7-4f78-ba73-6d9c40ca4257","name":"List Bots","request":{"name":"List Bots","description":{"content":"List all automation bots.\n\n**Required Scopes:** `automation:read`\n\nReturns all bots for the tenant with basic information\nand activation rule counts.","type":"text/plain"},"url":{"path":["api","v1","automation","bots"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"active_only","value":"false","description":"Only return active bots"},{"disabled":false,"key":"skip","value":"0","description":"Pagination offset"},{"disabled":false,"key":"limit","value":"100","description":"Pagination limit"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1f59cd92-0fe5-4ec4-9726-17e35ca58974","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots"],"host":["{{baseUrl}}"],"query":[{"key":"active_only","value":"false"},{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_escalations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_rules_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_tag_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_routing_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_fallback_minutes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_escalations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_rules_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_tag_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_routing_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_fallback_minutes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"6887bd02-1420-4b02-8d57-da13c05bbc68","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots"],"host":["{{baseUrl}}"],"query":[{"key":"active_only","value":"false"},{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae3ba532-bd11-4c51-81dc-65cb7d78f837","name":"Reorder Bots","request":{"name":"Reorder Bots","description":{"content":"Reorder automation bots by priority.\n\n**Required Scopes:** `automation:update`\n\nUpdates the priority of bots based on the order in the request.\nThe first bot in the list gets the highest priority, the last gets the lowest.\nHigher priority bots are evaluated first when matching context.\n\n**Request Body:**\n- `bot_ids`: List of bot IDs in desired priority order (first = highest priority)\n\n**Example:**\n```json\n{\"bot_ids\": [\"bot-uuid-1\", \"bot-uuid-2\", \"bot-uuid-3\"]}\n```\nAfter reordering:\n- bot-uuid-1: priority 2 (highest)\n- bot-uuid-2: priority 1\n- bot-uuid-3: priority 0 (lowest)","type":"text/plain"},"url":{"path":["api","v1","automation","bots","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"bot_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"92bf9969-5d87-4bb2-8502-87ce04f4fe7c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"bot_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"updated_count\": 1780,\n  \"bots\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"50416333-23b5-4d38-9966-f3bd00c3dce1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"bot_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"54514a42-3ae8-44c1-834e-2da702d18eac","name":"Get Bot","request":{"name":"Get Bot","description":{"content":"Get a specific automation bot.\n\n**Required Scopes:** `automation:read`\n\nReturns full bot configuration including personality settings,\nknowledge base configuration, and escalation rules.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3f097fad-40e2-47cc-986c-9be938eee7d9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a1654713-2064-44d6-ba1c-b4306d314924","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5bb7e89e-a0f9-4eb9-99b3-a5ced64774fb","name":"Update Bot","request":{"name":"Update Bot","description":{"content":"Update an automation bot.\n\n**Required Scopes:** `automation:update`\n\nUpdate bot configuration. Only provided fields will be updated.\nChanging a non-keyword bot's ``bot_type`` to ``keyword`` returns 422\n``keyword_bots_retired``; existing keyword bots stay fully editable.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"bot_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_active\": false,\n  \"priority\": 1173,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"is_kb_only_mode\": false,\n  \"response_language\": \"string\",\n  \"confidence_threshold\": 0.7036604356150431,\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": true,\n  \"vision_enabled\": true,\n  \"web_search_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 1330,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"fixed\",\n  \"escalation_enabled\": false,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 1,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 0.4861072879159076,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": true,\n  \"escalation_timezone\": \"string\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation_fallback_minutes\": 608,\n  \"max_email_replies\": 44,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": false,\n    \"key_1\": \"string\"\n  },\n  \"greeting_buttons_enabled\": true,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": true,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": true,\n    \"key_1\": 354,\n    \"key_2\": 4556\n  },\n  \"kb_live_refresh_mode\": \"off\",\n  \"kb_live_refresh_ttl_seconds\": 9755\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2ac197f7-ef6c-4bb2-86d2-85f3187d5aed","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"bot_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_active\": true,\n  \"priority\": 1107,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": false,\n  \"is_kb_only_mode\": true,\n  \"response_language\": \"string\",\n  \"confidence_threshold\": 0.36303913941389765,\n  \"is_detailed_response\": true,\n  \"use_full_conversation_context\": true,\n  \"vision_enabled\": false,\n  \"web_search_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 9136,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"cascade\",\n  \"escalation_enabled\": true,\n  \"offers_escalation\": false,\n  \"max_failed_attempts\": 3,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 0.37123051631790416,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_field_collection_mode\": true,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"string\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation_fallback_minutes\": 1394,\n  \"max_email_replies\": 39,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 5036.827832849698\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": true,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": 2574.339205731683\n  },\n  \"kb_live_refresh_mode\": \"live_once\",\n  \"kb_live_refresh_ttl_seconds\": 8837\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c8409cb7-8e18-4efd-b3d4-d6ee976337ae","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"bot_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_active\": true,\n  \"priority\": 1107,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": false,\n  \"is_kb_only_mode\": true,\n  \"response_language\": \"string\",\n  \"confidence_threshold\": 0.36303913941389765,\n  \"is_detailed_response\": true,\n  \"use_full_conversation_context\": true,\n  \"vision_enabled\": false,\n  \"web_search_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 9136,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"cascade\",\n  \"escalation_enabled\": true,\n  \"offers_escalation\": false,\n  \"max_failed_attempts\": 3,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 0.37123051631790416,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_field_collection_mode\": true,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"string\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalation_fallback_minutes\": 1394,\n  \"max_email_replies\": 39,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 5036.827832849698\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": true,\n  \"source_footer_mode\": \"urls_only\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": 2574.339205731683\n  },\n  \"kb_live_refresh_mode\": \"live_once\",\n  \"kb_live_refresh_ttl_seconds\": 8837\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3aa94139-1800-4396-befa-1f9d9c83333a","name":"Delete Bot","request":{"name":"Delete Bot","description":{"content":"Delete an automation bot.\n\n**Required Scopes:** `automation:delete`\n\nPermanently deletes the bot and all associated activation rules,\nsessions, and interaction logs.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e02a819c-42a9-4971-80a0-3b245aacf6bc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"b0f95e1e-2034-43cf-a567-d3e3a4f07bb8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"39755fb8-7fa6-4cae-b6a7-2e549d105134","name":"Convert Bot To Flow Endpoint","request":{"name":"Convert Bot To Flow Endpoint","description":{"content":"Convert a deprecated bot into an equivalent Flow.\n\n**Required Scopes:** ``automation:update``\n\nOnly ``router``, ``lead_qualification`` and ``appointment`` bots are\nconvertible — calling this on any other bot type returns 400.\n\nOn success (commit) the source bot is left in the DB but set to\n``is_active=false`` so historical conversations and interaction logs\nremain intact. The new flow is created in ``draft`` status — the\noperator should review + publish it manually.\n\nIdempotent: if a flow named ``\"<bot.name> (migrated)\"`` already\nexists for the tenant the endpoint returns 409 with the existing\nflow id so the caller can navigate to it.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","convert-to-flow"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"dry_run","value":"false","description":"When true (default false) returns the generated flow JSON without writing anything to the database. Use this from the UI to preview the conversion before committing."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"73dc0b76-ea35-4184-b3b2-c7e034f2f39a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","convert-to-flow"],"host":["{{baseUrl}}"],"query":[{"key":"dry_run","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": 4997.801437549168\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"99307a51-4369-4312-b179-79baa8c32d0d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","convert-to-flow"],"host":["{{baseUrl}}"],"query":[{"key":"dry_run","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f925919f-e344-4bcf-88aa-119930bcd444","name":"Upload Bot Avatar","request":{"name":"Upload Bot Avatar","description":{"content":"Upload an avatar image for an automation bot.\n\nReplaces any existing bot avatar. The uploaded image is stored in GCP\nCloud Storage and a signed URL is saved to the bot's avatar_url field.\n\n**Required Scopes:** `automation:update`\n\n**Constraints:**\n- File type: PNG, JPG, JPEG\n- Max size: 2MB","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) Avatar image file (PNG/JPG, max 2MB)"}]}},"response":[{"id":"b86c8398-a858-4580-8a50-cf0c61d7bef7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) Avatar image file (PNG/JPG, max 2MB)","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"597ed012-67df-46fe-b32d-30cbe6d80c07","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) Avatar image file (PNG/JPG, max 2MB)","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"692566d9-6161-4a17-b9ea-c1688e8d9c31","name":"Delete Bot Avatar","request":{"name":"Delete Bot Avatar","description":{"content":"Remove an automation bot's avatar.\n\nSets the bot's avatar_url to None.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"3e50819b-d988-4912-afab-22b428716655","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"08510a57-76a3-4e35-a962-a59cb011cd53","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"54fd28f8-0599-44b9-ade0-73bc426479d0","name":"Create Activation Rule","request":{"name":"Create Activation Rule","description":{"content":"Create an activation rule for a bot.\n\n**Required Scopes:** `automation:update`\n\nActivation rules determine when and where a bot should be activated.\nRules are evaluated in priority order (highest first).\n\nRule types:\n- Channel filter: Only activate for specific channel types\n- Widget filter: Only activate for specific widgets\n- Schedule: Only activate during specific time ranges\n- Agent status: Only activate when no agents are online","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_schedule_enabled\": false,\n  \"timezone\": \"UTC\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requires_no_agents_online\": false,\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 0,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2908af4e-13ee-474f-9b05-d6253ed088cc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_schedule_enabled\": false,\n  \"timezone\": \"UTC\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requires_no_agents_online\": false,\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 0,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"is_schedule_enabled\": false,\n  \"timezone\": \"string\",\n  \"requires_no_agents_online\": true,\n  \"priority\": 1009,\n  \"is_active\": true,\n  \"created_at\": \"1982-08-28T22:50:28.594Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"2001-03-13T21:10:20.336Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b8a5e4f6-e5ce-4535-be60-23daf1fdc59c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_schedule_enabled\": false,\n  \"timezone\": \"UTC\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requires_no_agents_online\": false,\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 0,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c3a004e2-40cb-4adc-bfef-2e991f3c05e9","name":"List Activation Rules","request":{"name":"List Activation Rules","description":{"content":"List activation rules for a bot.\n\n**Required Scopes:** `automation:read`\n\nReturns all activation rules sorted by priority (highest first).","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"316de2a0-165d-4f45-b46f-efeb203153ca","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"requires_no_agents_online\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_types\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"widget_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"time_ranges\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_email_addresses\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_schedule_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"requires_no_agents_online\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_types\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"widget_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"time_ranges\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_email_addresses\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"8dad23c6-9bee-445e-a22c-c12d3a6d932a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"690ebd90-288e-4007-93fd-b096f6c20dc2","name":"Update Activation Rule","request":{"name":"Update Activation Rule","description":{"content":"Update an activation rule.\n\n**Required Scopes:** `automation:update`\n\nUpdate rule configuration. Only provided fields will be updated.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_schedule_enabled\": false,\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requires_no_agents_online\": true,\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 1,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7dd3f96f-55f7-402f-829f-d9b564a75248","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_schedule_enabled\": true,\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requires_no_agents_online\": true,\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 16,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"is_schedule_enabled\": false,\n  \"timezone\": \"string\",\n  \"requires_no_agents_online\": true,\n  \"priority\": 1009,\n  \"is_active\": true,\n  \"created_at\": \"1982-08-28T22:50:28.594Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"2001-03-13T21:10:20.336Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"58920b64-5585-43ed-bc90-1abc4a6dc6c2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"widget_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_schedule_enabled\": true,\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requires_no_agents_online\": true,\n  \"recipient_email_addresses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 16,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3f2bfc3f-08c2-4884-8be7-fe744189e7fe","name":"Delete Activation Rule","request":{"name":"Delete Activation Rule","description":{"content":"Delete an activation rule.\n\n**Required Scopes:** `automation:delete`\n\nPermanently deletes the activation rule.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"9c7a6a27-45cd-4a2e-8eef-bb815cd31a7c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"8ce6a4d0-286c-43b4-8062-609f75a6d693","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"92825f64-6e3f-4921-9ae4-3d06d592cff9","name":"List Sessions","request":{"name":"List Sessions","description":{"content":"List bot conversation sessions.\n\n**Required Scopes:** `automation:read`\n\nReturns all bot sessions with optional filtering by bot or status.","type":"text/plain"},"url":{"path":["api","v1","automation","sessions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"bot_id","value":"string","description":"Filter by bot ID"},{"disabled":false,"key":"session_status","value":"string","description":"Filter by status: active, escalated, completed, abandoned"},{"disabled":false,"key":"skip","value":"0","description":"Pagination offset"},{"disabled":false,"key":"limit","value":"100","description":"Pagination limit"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"930153aa-7408-4efc-b46b-05694e6d5b2a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"bot_id","value":"string"},{"key":"session_status","value":"string"},{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ended_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"escalation_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ended_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"67ab599f-0440-4930-afc9-e9533eb47370","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"bot_id","value":"string"},{"key":"session_status","value":"string"},{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"90e058ba-3dd8-409f-ad4c-67b942128272","name":"Get Session","request":{"name":"Get Session","description":{"content":"Get a specific bot session.\n\n**Required Scopes:** `automation:read`\n\nReturns full session details including collected fields and escalation info.","type":"text/plain"},"url":{"path":["api","v1","automation","sessions",":session_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d6512ad4-9fe4-4c5b-ba27-5ae6c085c8ae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","sessions",":session_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"active\",\n  \"message_count\": 3266,\n  \"low_confidence_count\": 4045,\n  \"started_at\": \"2007-08-12T04:39:49.217Z\",\n  \"last_interaction_at\": \"1956-02-11T12:54:17.168Z\",\n  \"collected_fields\": {\n    \"key_0\": 4160\n  },\n  \"pending_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_reason\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"escalated_to_user_id\": \"string\",\n  \"ended_at\": \"2022-02-24T15:12:22.502Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0299bd6e-4deb-487a-b4eb-1a19ee3a603a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","sessions",":session_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8490ad53-1dc6-4828-8540-e4d5310cbafa","name":"List Session Logs","request":{"name":"List Session Logs","description":{"content":"List interaction logs for a session.\n\n**Required Scopes:** `automation:read`\n\nReturns all bot-user interactions for debugging and analysis.","type":"text/plain"},"url":{"path":["api","v1","automation","sessions",":session_id","logs"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"skip","value":"0","description":"Pagination offset"},{"disabled":false,"key":"limit","value":"100","description":"Pagination limit"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"17e54fcb-57e2-4706-b7b7-dd90e945db4a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","sessions",":session_id","logs"],"host":["{{baseUrl}}"],"query":[{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"session_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_input\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_response\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"confidence_score\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_sources_used\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"input_tokens\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"output_tokens\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_used\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"session_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_input\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_response\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"confidence_score\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_sources_used\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"input_tokens\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"output_tokens\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"model_used\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"613fab5c-0d98-4aa0-821c-fbd9a6c094f8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","sessions",":session_id","logs"],"host":["{{baseUrl}}"],"query":[{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f84964ae-156b-49f2-b939-3641779a0c14","name":"Get Analytics Summary","request":{"name":"Get Analytics Summary","description":{"content":"Get analytics summary across all bots.\n\n**Required Scopes:** `automation:read` OR `analytics:read`\n\nReturns aggregate metrics and per-bot breakdown.","type":"text/plain"},"url":{"path":["api","v1","automation","analytics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"period_days","value":"30","description":"Analysis period in days"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e8dea89b-4bf6-4014-be34-0d884df3cd14","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"period_days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tenant_id\": \"string\",\n  \"period_start\": \"1959-01-26T01:44:43.269Z\",\n  \"period_end\": \"1970-01-07T16:18:12.519Z\",\n  \"period_days\": 30,\n  \"total_bots\": 0,\n  \"active_bots\": 0,\n  \"total_sessions\": 0,\n  \"total_completions\": 0,\n  \"total_escalations\": 0,\n  \"total_abandonments\": 0,\n  \"total_messages\": 0,\n  \"overall_resolution_rate\": 0,\n  \"overall_escalation_rate\": 0,\n  \"avg_messages_per_session\": 0,\n  \"total_conversations\": 0,\n  \"total_resolved_conversations\": 0,\n  \"total_handoff_conversations\": 0,\n  \"resolved_pct\": 2592.7712818359905,\n  \"handoff_pct\": 9978.905328047633,\n  \"insufficient_data\": true,\n  \"min_sample\": 20,\n  \"bot_breakdown\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"957591f7-c4ed-4d2f-9ac2-1e85def6281f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"period_days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e3d0a504-9fdb-4adc-83bb-1d9ec08262eb","name":"Get Bot Analytics","request":{"name":"Get Bot Analytics","description":{"content":"Get analytics for a specific bot.\n\n**Required Scopes:** `automation:read` OR `analytics:read`\n\nReturns detailed metrics including session stats, resolution rate,\nescalation reasons, and token usage.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","analytics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"period_days","value":"30","description":"Analysis period in days"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c0c55b08-5524-4611-84f9-99670f9e7edb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"period_days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"bot_id\": \"string\",\n  \"bot_name\": \"string\",\n  \"period_start\": \"2015-09-22T21:56:21.309Z\",\n  \"period_end\": \"2010-10-10T00:31:07.922Z\",\n  \"total_sessions\": 0,\n  \"active_sessions\": 0,\n  \"completed_sessions\": 0,\n  \"escalated_sessions\": 0,\n  \"abandoned_sessions\": 0,\n  \"resolution_rate\": 0,\n  \"escalation_rate\": 0,\n  \"avg_messages_per_session\": 0,\n  \"avg_confidence_score\": 5566.228318412495,\n  \"conversations\": 0,\n  \"resolved_conversations\": 0,\n  \"handoff_conversations\": 0,\n  \"resolved_pct\": 2997.0475679187293,\n  \"handoff_pct\": 9414.52425190213,\n  \"insufficient_data\": true,\n  \"min_sample\": 20,\n  \"total_input_tokens\": 0,\n  \"total_output_tokens\": 0,\n  \"escalation_reasons\": {\n    \"key_0\": 2851,\n    \"key_1\": 7299,\n    \"key_2\": 2914,\n    \"key_3\": 9359,\n    \"key_4\": 6166\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"af1c84fc-d845-4e3f-87e9-284d8a14f9f4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"period_days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ac2ba6d0-3e79-4df8-a260-398ce02c6c7b","name":"List Keyword Triggers","request":{"name":"List Keyword Triggers","description":{"content":"List keyword triggers for a bot, sorted by priority DESC.\n\n**Required Scopes:** `automation:read`\n\nReturns all keyword triggers with their response sequences.\nOnly applicable to bots of type KEYWORD.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7cfa427e-42b9-4941-bc06-e26a86e1e0f5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"keyword\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"match_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handover_to_human\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flow_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"responses\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"keyword\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"match_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handover_to_human\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flow_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"responses\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"e2cf8b09-0020-4b80-a6ed-7b60ff65c807","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"37cacb6c-7127-41f8-a78b-a46b03eff8bb","name":"Create Keyword Trigger","request":{"name":"Create Keyword Trigger","description":{"content":"Create a keyword trigger for a bot.\n\n**Required Scopes:** `automation:update`\n\nCreates a new keyword trigger with its response sequence.\nOnly applicable to bots of type KEYWORD.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"keyword\": \"string\",\n  \"match_type\": \"exact\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 0,\n  \"is_active\": true,\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"24630267-6967-45fb-89d4-9c4879d1fe01","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"keyword\": \"string\",\n  \"match_type\": \"exact\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 0,\n  \"is_active\": true,\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"keyword\": \"string\",\n  \"match_type\": \"string\",\n  \"priority\": 1679,\n  \"is_active\": true,\n  \"created_at\": \"1959-10-15T21:10:50.597Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"1981-07-15T21:17:45.482Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f9877867-9d58-4fb1-a5fd-7ac19dfcda4e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"keyword\": \"string\",\n  \"match_type\": \"exact\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 0,\n  \"is_active\": true,\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3ba44936-f9b4-4e43-b584-f9e9665418aa","name":"Reorder Keyword Triggers","request":{"name":"Reorder Keyword Triggers","description":{"content":"Reorder keyword triggers by priority.\n\n**Required Scopes:** `automation:update`\n\nUpdates the priority of triggers based on the order in the request.\nThe first trigger in the list gets the highest priority.\nOnly applicable to bots of type KEYWORD.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"trigger_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9d191fff-01e0-422d-a8aa-02b14ef6fa02","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"trigger_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"keyword\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"match_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handover_to_human\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flow_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"responses\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"keyword\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"match_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"priority\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_bot_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handover_to_human\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flow_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"responses\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"5cead7f0-38b6-400a-90b8-166733d6ba75","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"trigger_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"74446330-f945-4746-9158-5c2382b773a5","name":"Get Keyword Trigger","request":{"name":"Get Keyword Trigger","description":{"content":"Get a specific keyword trigger with its responses.\n\n**Required Scopes:** `automation:read`\n\nReturns the keyword trigger with its full response sequence.\nOnly applicable to bots of type KEYWORD.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1a7425c4-7d95-4799-b14f-e35a58ac4524","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"keyword\": \"string\",\n  \"match_type\": \"string\",\n  \"priority\": 1679,\n  \"is_active\": true,\n  \"created_at\": \"1959-10-15T21:10:50.597Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"1981-07-15T21:17:45.482Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"307b94f5-0f0a-404a-952c-015c7d4cde07","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b6a9b316-db84-4d9a-95ad-2a49e4f5ea74","name":"Update Keyword Trigger","request":{"name":"Update Keyword Trigger","description":{"content":"Update a keyword trigger.\n\n**Required Scopes:** `automation:update`\n\nUpdates trigger configuration. If responses are provided,\nexisting responses are replaced with the new set.\nOnly applicable to bots of type KEYWORD.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"keyword\": \"string\",\n  \"match_type\": \"string\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 7803,\n  \"is_active\": false,\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"db2b4de3-01d0-4cfd-865d-36dec3d62110","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"keyword\": \"strin\",\n  \"match_type\": \"string\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 539,\n  \"is_active\": true,\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": true,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"bot_id\": \"string\",\n  \"keyword\": \"string\",\n  \"match_type\": \"string\",\n  \"priority\": 1679,\n  \"is_active\": true,\n  \"created_at\": \"1959-10-15T21:10:50.597Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": false,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"1981-07-15T21:17:45.482Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"45c91f52-7dc8-4bc5-8de2-30c333ab842e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"keyword\": \"strin\",\n  \"match_type\": \"string\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"priority\": 539,\n  \"is_active\": true,\n  \"handoff_bot_id\": \"string\",\n  \"handover_to_human\": true,\n  \"flow_id\": \"string\",\n  \"responses\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ce675bf6-aedf-43c1-8d5b-2558f67916f3","name":"Delete Keyword Trigger","request":{"name":"Delete Keyword Trigger","description":{"content":"Delete a keyword trigger.\n\n**Required Scopes:** `automation:delete`\n\nPermanently deletes the trigger and all its responses.\nOnly applicable to bots of type KEYWORD.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b9e7d99d-ecc4-4117-9a4a-3030260a1d6d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"3a9192cc-654f-4fb6-af47-cdeedf524e79","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers",":trigger_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"trigger_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4687e25d-dff7-4644-a874-c1c8d3965404","name":"Upload Keyword Trigger Media","request":{"name":"Upload Keyword Trigger Media","description":{"content":"Upload a media file for use in keyword trigger responses.\n\n**Required Scopes:** `automation:update`\n\nUploads a file to cloud storage and returns an attachment record\nthat can be referenced by `attachment_id` in keyword trigger responses.\n\nAccepts images, videos, audio, and documents. Max file size: 50MB.\n\nReturns:\n    attachment_id, url, filename, and content_type for the uploaded file.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) "}]}},"response":[{"id":"9aec05d0-c95f-4de5-b9b1-609a566b856b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1fcbb38c-d168-408e-bc38-dd6a680f8382","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","keyword-triggers","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"61ac74bb-c94f-478e-b774-1eb500b83f4d","name":"Delete Bot Translation","request":{"name":"Delete Bot Translation","description":{"content":"Delete the cached translations for a single language from a bot.\n\nIdempotent: removing a language that is not present still returns 200 with the\n(unchanged) bot. Returns 404 only when the bot itself does not exist or is not\nowned by the tenant.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","translations",":lang_code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"lang_code","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"f436235a-219e-4095-aac9-b4083338ecba","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","translations",":lang_code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"lang_code","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a1d069b8-85f0-4477-8987-1d4e8921a9e4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","translations",":lang_code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"lang_code","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"560103b7-b156-42b1-9465-64a2d13a513c","name":"Upsert Bot Translation","request":{"name":"Upsert Bot Translation","description":{"content":"Insert or replace the cached translations for a single language on a bot.\n\nThe request body is the per-language translations object (the value stored at\ntranslation_cache[lang_code]); it is free-form and may contain nested\nstructures such as routing_messages. Returns 404 only when the bot itself does\nnot exist or is not owned by the tenant.\n\n**Required Scopes:** `automation:update`","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","translations",":lang_code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"lang_code","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"key_0\": 1675,\n  \"key_1\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f8aee862-d98e-4bd5-b7e5-3d047da46943","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","translations",":lang_code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"lang_code","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"key_0\": 1675,\n  \"key_1\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"345fe0e6-e74a-4bbe-afea-4d5475bb266e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","translations",":lang_code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"lang_code","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"key_0\": 1675,\n  \"key_1\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"70f0b740-5570-444d-ac13-dffde41a3d25","name":"Get Hub Stats","request":{"name":"Get Hub Stats","description":{"content":"Agents overview: KPIs + one row per bot (agents and classic bots, incl.\npaused) in priority order.\n\n**Required Scopes:** `automation:read`\n\nA conversation counts once per bot; it is *handed off* when a human was\nbrought in, otherwise *resolved*. Percentages are null below\n``min_sample`` (20) conversations per bot.","type":"text/plain"},"url":{"path":["api","v1","automation","hub","stats"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30","description":"Range in days: 7, 30 or 90"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3273e666-ef00-41ef-972a-abb52700db33","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","hub","stats"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"range_days\": 8441,\n  \"series_dates\": [\n    \"string\",\n    \"string\"\n  ],\n  \"min_sample\": 3315,\n  \"totals\": {\n    \"conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversations_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversations_delta_pct\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"resolved\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"resolved_pct\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoffs\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"handoff_pct\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"insufficient_data\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"credits\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"credits_eur\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"agents\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"period_start\": \"string\",\n  \"period_end\": \"string\",\n  \"truncated\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7b573d74-eed5-46fb-8ea6-3698bddab84f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","hub","stats"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c59b52c6-c2a1-462a-a1e3-1093e7773afc","name":"Duplicate Bot","request":{"name":"Duplicate Bot","description":{"content":"Duplicate a Conversational Agent inside the same workspace.\n\n**Required Scopes:** `automation:create`\n\nThe copy is an unpublished draft, paused, and placed last. It keeps settings, skills (incl.\npinned versions) and knowledge sources, but no activation rules,\nconversations, ratings or history. Classic bots return 422\n``duplicate_classic_not_supported``.","type":"text/plain"},"url":{"path":["api","v1","automation","bots",":bot_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"289a5630-6ce2-45db-9cbd-15d45849c228","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"bot_type\": \"faq\",\n  \"is_active\": false,\n  \"is_kb_only_mode\": false,\n  \"confidence_threshold\": 2168.270299782423,\n  \"offers_escalation\": true,\n  \"max_failed_attempts\": 7581,\n  \"created_at\": \"1986-09-25T17:57:30.582Z\",\n  \"priority\": 0,\n  \"personality_prompt\": \"string\",\n  \"greeting_message\": \"string\",\n  \"escalation_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"ai_disclosure_message\": \"string\",\n  \"ai_disclosure_include_escalation\": true,\n  \"response_language\": \"string\",\n  \"is_detailed_response\": false,\n  \"use_full_conversation_context\": false,\n  \"vision_enabled\": false,\n  \"web_search_mode\": \"string\",\n  \"web_search_allowed_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_required_keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"web_search_max_per_conversation\": 8055,\n  \"deep_answers_enabled\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"string\",\n  \"escalation_enabled\": true,\n  \"handoff_message\": \"string\",\n  \"no_answer_message\": \"string\",\n  \"escalation_offer_message\": \"string\",\n  \"immediate_handoff_threshold\": 6357.536773368029,\n  \"required_fields\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"routing_config\": {\n    \"key_0\": 4492.939762576574,\n    \"key_1\": \"string\",\n    \"key_2\": true\n  },\n  \"is_field_collection_mode\": false,\n  \"calendly_event_type_uri\": \"string\",\n  \"offline_escalation_behavior\": \"leave_message\",\n  \"offline_message\": \"string\",\n  \"outside_hours_message\": \"string\",\n  \"is_escalation_schedule_enabled\": false,\n  \"escalation_timezone\": \"UTC\",\n  \"escalation_schedule\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"escalation_tag_id\": \"string\",\n  \"escalation_routing_strategy\": \"string\",\n  \"escalation_fallback_minutes\": 6872,\n  \"max_email_replies\": 1,\n  \"is_email_reply_mode\": false,\n  \"coexist_bot_id\": \"string\",\n  \"coexist_mode\": \"string\",\n  \"base_language\": \"string\",\n  \"translation_cache\": {\n    \"key_0\": true,\n    \"key_1\": 1589\n  },\n  \"greeting_buttons_enabled\": false,\n  \"greeting_human_button_caption\": \"string\",\n  \"greeting_continue_button_caption\": \"string\",\n  \"greeting_continue_ack_message\": \"string\",\n  \"source_footer_enabled\": false,\n  \"source_footer_mode\": \"string\",\n  \"source_link_params\": {\n    \"key_0\": false,\n    \"key_1\": false,\n    \"key_2\": 6036\n  },\n  \"kb_live_refresh_mode\": \"string\",\n  \"kb_live_refresh_ttl_seconds\": 809,\n  \"total_conversations\": 0,\n  \"total_escalations\": 0,\n  \"updated_at\": \"1978-05-13T12:19:07.105Z\",\n  \"activation_rules_count\": 0,\n  \"keyword_triggers_count\": 4215\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bd3c4a66-d84b-406f-a4d4-ee4aaad9541d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","bots",":bot_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2b86219b-2e6d-4280-a68c-634f206516bc","name":"List Hub Templates","request":{"name":"List Hub Templates","description":{"content":"Agent templates for \"Aus Vorlage\" (keys only; display copy is client-side).\n\n**Required Scopes:** `automation:read`","type":"text/plain"},"url":{"path":["api","v1","automation","hub","templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"78458414-b4da-4b95-bc82-1a15dfa8396e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","hub","templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ca080c0a-83af-45fe-8648-08558e7285a3","name":"Create From Template","request":{"name":"Create From Template","description":{"content":"Create a paused, unpublished (draft) Conversational Agent from a template, in the workspace\nlanguage (German or English). No AI credits are used.\n\n**Required Scopes:** `automation:create`","type":"text/plain"},"url":{"path":["api","v1","automation","hub","templates",":key","create"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"key","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"879305de-2ebb-46d1-bbda-a713d26d68f4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","automation","hub","templates",":key","create"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"key","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"agent_id\": \"string\",\n  \"bot_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"730bbcc4-fe21-4983-84e9-0b629eb7287d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","automation","hub","templates",":key","create"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"key","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"2d12d76a-04b1-44b2-bbb1-b909ae1460a9","name":"Bounce Handling","description":{"content":"Monitor and manage email bounces, complaints, and delivery failures.","type":"text/plain"},"item":[{"id":"96b3fcc9-f2b3-4274-8508-e78d7d5890ed","name":"Get Suppression List","request":{"name":"Get Suppression List","description":{"content":"Get bounce suppression list\n\nRetrieve all suppressed email addresses with optional filtering.\n\n- **bounce_type**: Filter by 'hard' or 'soft' (optional)\n- **limit**: Max results per page (1-1000)\n- **offset**: Pagination offset\n\n**🔐 Required Scopes:** `analytics:read`\n","type":"text/plain"},"url":{"path":["api","v1","bounce-suppressions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"bounce_type","value":"soft"},{"disabled":false,"key":"limit","value":"100"},{"disabled":false,"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d3ae0559-d43e-433e-ab6f-c2d267ef4460","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","bounce-suppressions"],"host":["{{baseUrl}}"],"query":[{"key":"bounce_type","value":"soft"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 6297,\n  \"limit\": 2419,\n  \"offset\": 5536\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d1ff2dfb-2720-477f-a339-5242d867bc83","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","bounce-suppressions"],"host":["{{baseUrl}}"],"query":[{"key":"bounce_type","value":"soft"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9550c0b7-d87a-4dc0-8b5d-43b67cf1d51a","name":"Bulk Suppress Emails","request":{"name":"Bulk Suppress Emails","description":{"content":"Manually add multiple emails to suppression list\n\nUse this endpoint to:\n- Import known bad emails from external sources\n- Bulk suppress problematic email addresses\n- Proactively block emails before sending\n\nMaximum 1000 emails per request.\n\n**🔐 Required Scopes:** `settings:update`\n","type":"text/plain"},"url":{"path":["api","v1","bounce-suppressions","bulk-add"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"emails\": [\n    \"X00vxvgEBy@vxjezxxJNlI.fg\"\n  ],\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7469ea10-0ac6-40ab-b138-2bc944c2e483","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","bounce-suppressions","bulk-add"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"emails\": [\n    \"X00vxvgEBy@vxjezxxJNlI.fg\"\n  ],\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"added\": 1901,\n  \"skipped\": 3814,\n  \"total\": 6799\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d12880bd-3e82-4d3e-886b-4c359afe4eb9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","bounce-suppressions","bulk-add"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"emails\": [\n    \"X00vxvgEBy@vxjezxxJNlI.fg\"\n  ],\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"abf16210-238a-4927-a52e-68a1742c4168","name":"Remove From Suppression","request":{"name":"Remove From Suppression","description":{"content":"Remove email from suppression list\n\nUse when:\n- Email is confirmed valid again\n- Manual approval to re-enable email\n- Contact provided updated email address\n\nThis will reset the contact's email_status to 'valid' and\nallow future emails to be sent.\n\n**🔐 Required Scopes:** `settings:update`\n","type":"text/plain"},"url":{"path":["api","v1","bounce-suppressions",":email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"374f3e5c-1a97-4901-90d9-4fbe93371992","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","bounce-suppressions",":email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6135ad07-03d4-47f0-87dd-5870322bf7f3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","bounce-suppressions",":email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1062e192-e32a-4f86-81f1-0bfb257c9c1a","name":"Get Bounce Analytics","request":{"name":"Get Bounce Analytics","description":{"content":"Get bounce analytics\n\nReturns comprehensive bounce statistics:\n- Total bounces by type (hard/soft)\n- Bounce rates\n- Top bounce categories\n- Most problematic domains\n\nOptionally filter by specific campaign.\n\n- **campaign_id**: Filter by campaign (optional)\n- **days**: Time period (1-365 days)\n\n**🔐 Required Scopes:** `analytics:read`\n","type":"text/plain"},"url":{"path":["api","v1","bounce-analytics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"campaign_id","value":"string"},{"disabled":false,"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"38780414-3dc7-4f54-859a-7ed2d6c86f1e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","bounce-analytics"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_id","value":"string"},{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"total_bounces\": 2554,\n  \"hard_bounces\": 4405,\n  \"soft_bounces\": 3136,\n  \"hard_bounce_rate\": 4669.37190831399,\n  \"soft_bounce_rate\": 9739.485134047241,\n  \"top_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"top_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"period_days\": 1748\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"992ff4ad-a337-4f6a-a3c9-8a89cca3f028","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","bounce-analytics"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_id","value":"string"},{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"5f52e380-b2d3-46e6-b7ed-b3b908d0fc8e","name":"Campaigns","description":{"content":"Create and manage messaging campaigns for WhatsApp, SMS, and other channels. Schedule sends and track delivery.","type":"text/plain"},"item":[{"id":"06eeeca7-96c8-4512-99a4-8acaf1421601","name":"Create Campaign","request":{"name":"Create Campaign","description":{"content":"Create a new campaign\n\nWith `scheduled_at` the campaign is created as `scheduled` and must pass\nthe same checks as `POST /campaigns/{id}/schedule`: a large WhatsApp\ncampaign on a number that is still warming up is refused with HTTP 409\n`warmup_acknowledgement_required` unless `acknowledge_warmup_warning` is\ntrue, and a split plan that runs too long is refused with HTTP 422\n`split_plan_too_long`. Nothing is created in either case.\n\n**Send speed and batches:** `send_rate_limit` (messages per minute,\n1-60000) and `send_batch_size` (recipients per batch, at least 1) are\noptional. Rejected values return HTTP 422 `{code, message}` with `code`\none of `send_rate_limit_out_of_range`, `send_batch_size_invalid`,\n`send_pacing_conflicts_with_split` (cannot be combined with\n`send_split_config`) or `send_pacing_unavailable` (batches are not\navailable for this account yet).\n\n**Required Scopes:** `campaigns:create`","type":"text/plain"},"url":{"path":["api","v1","campaigns"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_content\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"message_text\": \"string\",\n  \"message_type\": \"text\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"1966-10-25T16:27:33.286Z\",\n  \"timezone\": \"string\",\n  \"send_rate_limit\": 3427,\n  \"send_batch_size\": 4396,\n  \"should_skip_duplicates\": true,\n  \"duplicate_window_hours\": 24,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\"\n  },\n  \"sms_optout_link_enabled\": false,\n  \"acknowledge_warmup_warning\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"04512477-9501-455a-879b-851125c5dbc5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_content\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"message_text\": \"string\",\n  \"message_type\": \"text\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"1980-11-30T10:23:07.553Z\",\n  \"timezone\": \"string\",\n  \"send_rate_limit\": 3241,\n  \"send_batch_size\": 7785,\n  \"should_skip_duplicates\": true,\n  \"duplicate_window_hours\": 24,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 8637\n  },\n  \"sms_optout_link_enabled\": true,\n  \"acknowledge_warmup_warning\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fe715534-c8a6-4481-800a-6756b16a3d75","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_content\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"message_text\": \"string\",\n  \"message_type\": \"text\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"1980-11-30T10:23:07.553Z\",\n  \"timezone\": \"string\",\n  \"send_rate_limit\": 3241,\n  \"send_batch_size\": 7785,\n  \"should_skip_duplicates\": true,\n  \"duplicate_window_hours\": 24,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 8637\n  },\n  \"sms_optout_link_enabled\": true,\n  \"acknowledge_warmup_warning\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6cb381a5-07a6-4665-8bb8-edef4bfffd3e","name":"List Campaigns","request":{"name":"List Campaigns","description":{"content":"List all campaigns for the tenant\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"campaign_status","value":"string"},{"disabled":false,"key":"limit","value":"50"},{"disabled":false,"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"fbb50b77-e65e-4757-9925-98beb7093af3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_status","value":"string"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_text\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"attachment_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"target_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"browser_push_title\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"scheduled_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"completed_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_recipients\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sent_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"delivered_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"read_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"failed_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_rate_limit\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"should_skip_duplicates\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_window_hours\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_content\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"list_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"selected_channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"throttle_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_batch_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"current_batch_number\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_variable_mapping\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_split_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_split_state\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_acknowledged_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_acknowledged_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_assessment\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sms_optout_link_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_text\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"attachment_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"target_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"browser_push_title\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"scheduled_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"completed_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_recipients\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sent_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"delivered_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"read_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"failed_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_rate_limit\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"should_skip_duplicates\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_window_hours\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_content\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"list_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"selected_channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"throttle_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_batch_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"current_batch_number\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_variable_mapping\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_split_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_split_state\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_acknowledged_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_acknowledged_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_assessment\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sms_optout_link_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"0d61eb8f-346c-4b76-be79-be74f1195d12","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_status","value":"string"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9ab5716a-3066-4018-b31a-37ce7bc778fb","name":"Get Personalization Variables","request":{"name":"Get Personalization Variables","description":{"content":"Get available personalization variables for campaign messages.\n\nReturns a list of variable placeholders (e.g. ``{{contact.name}}``)\nthat can be used in campaign message text. At send time, these placeholders\nare automatically replaced with the recipient contact's data.\n\nIncludes the tenant's active custom field definitions as\n``{{contact.custom.<key>}}`` variables.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns","variables"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"fedee095-d8be-46c1-8338-ebc3a566d801","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns","variables"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\"\n  },\n  {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\"\n  }\n]","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"21a04236-1fad-404f-aa72-152ed5888841","name":"Get Channel Media Specs","request":{"name":"Get Channel Media Specs","description":{"content":"Get per-channel media specifications for campaign attachments.\n\nReturns supported file types, size limits, and format constraints\nfor each messaging channel. Useful for the campaign wizard to show\nupload constraints before the user selects files.\n\n**🔐 Required Scopes:** `campaigns:read`\n","type":"text/plain"},"url":{"path":["api","v1","campaigns","channel-media-specs"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"597e3187-b2b1-4a56-b55e-8b0db2cba28b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns","channel-media-specs"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"whatsapp\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"telegram\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"messenger\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"sms\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"browser_push\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"rcs\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"71f105f5-3842-43a7-8fda-fed4cb3471af","name":"Get Campaign Unsubscribe Counts","request":{"name":"Get Campaign Unsubscribe Counts","description":{"content":"Batch opt-out counts for the messenger campaigns INDEX page.\n\nONE grouped query over the ``contact_subscription_events`` ledger for the\ngiven campaign ids (tenant-scoped). Per campaign: ``total`` opt-outs,\n``exact`` (link/manual — definite attribution) and ``estimated`` (keyword\nheuristic). Campaigns with no opt-outs are OMITTED — treat a missing id as 0.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns","unsubscribe-counts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"ids","value":"string","description":"(Required) Comma-separated campaign ids (max 200)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"857bbb59-ad7a-4079-9c3d-d7426f741bb9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns","unsubscribe-counts"],"host":["{{baseUrl}}"],"query":[{"key":"ids","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"counts\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"67038a51-cd2f-4e93-8337-1fd3f9fd8ec3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns","unsubscribe-counts"],"host":["{{baseUrl}}"],"query":[{"key":"ids","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"88dca22a-344d-4f38-a8b6-e18d237addf2","name":"Get Campaign","request":{"name":"Get Campaign","description":{"content":"Get a specific campaign\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a6dcc105-895b-4f30-a2f5-c9c9e2d3cffb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2349dc9e-f4ea-4b47-9023-e9984b446cd3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f9a6f414-cb08-41b2-bc60-8ee05d8bdf8b","name":"Update Campaign","request":{"name":"Update Campaign","description":{"content":"Update a campaign\n\n`send_split_config` (WhatsApp only) sets split sending; explicit `null`\nclears it. Rejected with 422 `{code, message}`: `invalid_split_config`,\n`split_sending_requires_whatsapp`, `split_config_not_editable`. An\n`approved` campaign may change ONLY `send_split_config`,\n`send_rate_limit` and `send_batch_size`.\n\n`send_rate_limit` / `send_batch_size`: explicit `null` clears the value,\nomitting the key leaves it unchanged. A campaign that is `sending`,\n`throttled`, `paused` or `failed` may change ONLY these two fields (the\nnext messages and the next batch use the new values); switching them on\nfor a campaign that is already sending moves its unsent recipients into\nbatch 1 at the new speed. Rejected with 422 `{code, message}`:\n`send_rate_limit_out_of_range`, `send_batch_size_invalid`,\n`send_pacing_conflicts_with_split`, `send_pacing_unavailable`,\n`send_pacing_not_editable`.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_content\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2017-11-16T17:28:57.673Z\",\n  \"timezone\": \"string\",\n  \"send_rate_limit\": 5772,\n  \"send_batch_size\": 6702,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6680,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 1981.732023359255,\n    \"key_1\": true\n  },\n  \"sms_optout_link_enabled\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1df8aeeb-b19e-4f11-b232-dc263052fa2b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_content\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"1960-04-05T03:11:36.835Z\",\n  \"timezone\": \"string\",\n  \"send_rate_limit\": 3641,\n  \"send_batch_size\": 3099,\n  \"should_skip_duplicates\": true,\n  \"duplicate_window_hours\": 101,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9652.633188746395\n  },\n  \"sms_optout_link_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3e56ba6d-8a73-45df-901a-9ad16bbe2267","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_content\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"1960-04-05T03:11:36.835Z\",\n  \"timezone\": \"string\",\n  \"send_rate_limit\": 3641,\n  \"send_batch_size\": 3099,\n  \"should_skip_duplicates\": true,\n  \"duplicate_window_hours\": 101,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9652.633188746395\n  },\n  \"sms_optout_link_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e18ffb03-b5e4-4175-b532-6eff4d853cc7","name":"Delete Campaign","request":{"name":"Delete Campaign","description":{"content":"Delete a campaign (draft or scheduled only).\n\nA campaign that has already sent messages (for example contacts enrolled\nfrom HubSpot) cannot be deleted: HTTP 400. Sent emails of an email\ncampaign are kept for billing before the delete.\n\n**Required Scopes:** `campaigns:delete`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"4bcce2d5-c371-4c53-9f4d-515744f6a079","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"cc3d0ac2-db49-4557-b6b5-b4d02863cd29","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f3ea4dc5-ffcd-420b-a41a-cc5e7cb8763c","name":"Add Segment","request":{"name":"Add Segment","description":{"content":"Add a segment filter to a campaign\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","segments"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"filter_type\": \"all_contacts\",\n  \"filter_operator\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"filter_value\": {\n    \"key_0\": \"string\",\n    \"key_1\": 1893\n  },\n  \"logical_operator\": \"and\",\n  \"filter_order\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6f580ffd-fd1f-46b3-a2d7-7c82194aec83","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","segments"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"filter_type\": \"all_contacts\",\n  \"filter_operator\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"filter_value\": {\n    \"key_0\": \"string\",\n    \"key_1\": 1893\n  },\n  \"logical_operator\": \"and\",\n  \"filter_order\": 0\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"filter_type\": \"dynamic_list\",\n  \"filter_operator\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"filter_value\": {\n    \"key_0\": 5530\n  },\n  \"logical_operator\": \"or\",\n  \"filter_order\": 7701,\n  \"created_at\": \"2018-03-18T06:14:20.292Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a976e721-896b-4c0e-98ca-1fb740a8b46b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","segments"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"filter_type\": \"all_contacts\",\n  \"filter_operator\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"filter_value\": {\n    \"key_0\": \"string\",\n    \"key_1\": 1893\n  },\n  \"logical_operator\": \"and\",\n  \"filter_order\": 0\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"913fc0e5-1916-404d-b718-382274c948aa","name":"Preview Segment","request":{"name":"Preview Segment","description":{"content":"Preview contacts that would be included in a segment (for UI testing)\n\n``limit`` (default 10) is capped at 100; a larger value is a 422.\nReturns contact names/phones/emails, so it needs `contacts:read` too.\n\n**Required Scopes:** `campaigns:read` AND `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns","preview-segment"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"segments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"dd49744d-da95-46dc-9e3d-468a6df43795","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns","preview-segment"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"segments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"016621b8-5ad6-4f85-af5b-ba55aff62156","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns","preview-segment"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"segments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"limit\": 10\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6542f5c8-6609-4fae-a0a1-7eb2323f4c5c","name":"Estimate Campaign Cost","request":{"name":"Estimate Campaign Cost","description":{"content":"Estimate campaign cost and check balance before sending\n\n**Required Scopes:** `campaigns:read`\n\nReturns:\n    - total_cost_eur: RAW usage cost in EUR (before the included pool)\n    - recipient_count: Number of recipients\n    - breakdown: Cost breakdown by channel ({count, cost})\n    - warnings: List of warnings about variable costs\n    - can_send: Whether campaign can be sent based on balance\n    - balance_error: Error message if insufficient balance\n    - current_balance_eur: Current balance in EUR\n\nIncluded-pool fields (base_fee plans only; 0 / null on legacy\n`minimum_commit` plans or plans with no included pool -- the UI gates the\npool UI on `included_messages_total > 0` and otherwise headlines\n`total_cost_eur`):\n    - included_messages_total: effective pooled allowance this month (int)\n    - included_messages_used: pooled units already consumed this month (int)\n    - included_messages_remaining: max(0, total - used) (int)\n    - projected_sends: billable send units this campaign draws (int)\n    - sends_covered_by_pool: min(projected_sends, remaining) (int)\n    - sends_over_pool: max(0, projected_sends - remaining) (int)\n    - payable_overage_eur: EUR actually payable for THIS campaign after the\n      pool absorbs what it can (0.00 when fully covered; null when no pool\n      applies -- use total_cost_eur). Excludes Meta/WhatsApp per-conversation\n      template fees, which Meta bills separately.\n    - fully_covered: bool, true when sends_over_pool == 0\n    - pool_is_shared: bool, true when the pool is shared across the account\n      (human wording is authored on the frontend for i18n)\n\nRCS Newsletter (MAU) agents (only present when the campaign sends via one):\n    - rcs_newsletter: {recipient_count, sendseven_fee_eur: 0.0, billing: \"mau\"}.\n      These recipients carry NO per-message fee and draw NO pool units, so\n      they are excluded from total_cost_eur / breakdown / projected_sends\n      (recipient_count still includes them). Their only cost is the monthly\n      active user price from the RCS balance -- see `GET /rcs-estimate`.","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","estimate-cost"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"137da8ff-f219-422a-b7c3-15555595bec1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","estimate-cost"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": 5382.780010670516,\n  \"key_1\": true,\n  \"key_2\": 7618,\n  \"key_3\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"33871904-b0ea-4935-af37-3828e99f4d63","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","estimate-cost"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e4ad8412-8a3a-4bd4-9b46-406670e8d598","name":"Send Campaign","request":{"name":"Send Campaign","description":{"content":"Send a campaign immediately\n\n**Required Scopes:** `campaigns:send`\n\nOptional body `{\"acknowledge_warmup_warning\": true}` (no body = false).\nA large WhatsApp campaign on a number that is still warming up is refused\nwith HTTP 409 `detail = {\"code\": \"warmup_acknowledgement_required\",\n\"message\": ..., \"warmup\": <warm-up assessment>}` unless acknowledged or\nsplit over days (`send_split_config`). Nothing is prepared or sent on 409.\nA split plan that would run too long is refused with HTTP 422\n`{\"code\": \"split_plan_too_long\", \"message\": ...}`.\n\nWith `send_split_config`, only day 1's batch is sent now; later batches\ngo out automatically (the response `split` block has `days_total`,\n`next_batch_at`, `scheduled_count`).\n\n**Response (200):** `{success, campaign_id, recipient_count,\npublished_count, dispatch, split, trial_recipient_cap, message}`. Messages\nare sent in the background after the response. `published_count` is the\nnumber of recipients queued to be sent now (all of them, or day 1 of a\nsplit plan). `dispatch` is `\"queued\"` when that number is above 0, and\n`\"pending\"` when nothing is due yet or queuing is retried automatically.\n\n**Send speed and batches:** with `send_rate_limit` and/or\n`send_batch_size` saved on the campaign, messages go out at the chosen\nspeed and, with a batch size, only the first batch is sent now. The\nresponse then also has `pacing: {paced, batch_number, armed, remaining,\nsend_rate_limit, send_batch_size}` (`armed` = recipients in batch 1,\n`remaining` = recipients waiting for later batches; `published_count` is\n0 because the messages are released gradually). After each batch the\ncampaign is `paused` with `throttle_reason = \"batch_complete\"`; send the\nnext one with `POST /campaigns/{id}/send-next-batch`. Invalid saved\nvalues are refused with HTTP 422 `{code, message}` (see\n`PUT /campaigns/{id}`).\n\nOnly campaigns with status `draft`, `approved` or `scheduled` can be sent.\n\n**Note:** Campaigns with status `in_review` or `rejected` cannot be sent\n(HTTP 400). A campaign that is already sending, throttled, completed,\npaused, failed or cancelled is refused with HTTP 409 -- re-posting here\nwould re-prepare the whole recipient list and send the campaign a second\ntime. Use `POST /campaigns/{id}/resume` for a paused or failed campaign.","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"acknowledge_warmup_warning\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"211a56cc-84a2-47e1-88ef-70647fcbe6e7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"acknowledge_warmup_warning\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ed65bd11-d17d-45a9-948e-71328066ccd4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"acknowledge_warmup_warning\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d63ee4a6-ba83-49ff-9f7b-c77d93889e89","name":"Pause Campaign","request":{"name":"Pause Campaign","description":{"content":"Pause a sending campaign\n\nAlso allowed while a split-sending campaign waits for its next daily batch\n(`throttled` with `throttle_reason = \"daily_batch_limit\"`). A paused\ncampaign never resumes on its own -- use resume.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"e192aa35-03a6-49f9-8a79-3a92e9b58a87","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d7355380-a094-4058-9210-f03f16bf2a34","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"889d1c34-448a-4df9-83f5-fdcb14d72549","name":"Resume Campaign","request":{"name":"Resume Campaign","description":{"content":"Resume a paused or failed campaign\n\nFor split-sending campaigns the remaining recipients are re-planned from\nnow: today's batch is sent, later batches continue on the following days.\n\nOptional body `{\"acknowledge_warmup_warning\": true}` (no body = false).\nA campaign the scheduler paused with `throttle_reason =\n\"warmup_acknowledgement_required\"` (its warm-up acknowledgement was\nmissing or cleared by an edit), and any campaign resumed before its\nrecipients were prepared, passes the same WhatsApp warm-up gate as\n`POST /send`: HTTP 409 `warmup_acknowledgement_required` unless\nacknowledged; nothing changes on 409. Such a campaign is then dispatched\nlike a fresh send (recipients prepared, day 1 of a split plan published).\nA campaign held because its audience grew since the acknowledgement\n(`warmup_assessment.hold.kind = \"audience_grew\"`) always needs\n`acknowledge_warmup_warning: true`. A successful resume clears\n`warmup_assessment.hold`.\n\nResume continues the recipients that are still pending. It does not\nre-send failed recipients; use `POST /campaigns/{id}/retry-failed` for\nthat. Sending continues in the background after the response.\n\nCampaigns sent in batches: a campaign paused after finishing a batch\n(`throttle_reason = \"batch_complete\"`) sends its next batch at the saved\nbatch size (the same as `POST /campaigns/{id}/send-next-batch` with an\nempty body). Any other pause continues the current batch at the saved\nsend speed. A campaign sent in batches that ended as `completed` or\n`failed` while recipients were still waiting is re-opened the same way.\nWhile sending at a set speed or in batches is briefly unavailable, a\ncampaign that uses it returns HTTP 422 `send_pacing_unavailable`.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"acknowledge_warmup_warning\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"892eb9e3-90c5-4171-be78-ded41c8986ef","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"acknowledge_warmup_warning\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"290b9a6b-8f3b-46c5-ac9c-ad1b81201169","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"acknowledge_warmup_warning\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9b4426f8-28dd-479c-bf66-196067b7f526","name":"Send Next Batch","request":{"name":"Send Next Batch","description":{"content":"Send the next batch of a campaign sent in batches\n\nOnly for a campaign that finished a batch: `status = \"paused\"` with\n`throttle_reason = \"batch_complete\"`, or one that ended as `completed` /\n`failed` while recipients were still waiting (it continues its unfinished\nbatch first, if any). Anything else returns HTTP 409\n`{\"code\": \"campaign_not_awaiting_batch\", \"message\": ...}` (also when two\nrequests race: only the first one sends a batch). HTTP 422\n`send_pacing_unavailable` while batch sending is briefly unavailable.\n\nBody (optional): `{\"batch_size\": 500}` sends 500 recipients now and saves\n500 as the campaign's batch size (1-1,000,000; anything else is HTTP 422\n`{\"code\": \"send_batch_size_invalid\", \"message\": ...}`); `{\"all_remaining\": true}` sends\neveryone who is still waiting. An empty body sends the next batch at the\nsaved batch size. Recipients who opted out, unsubscribed or were blocked\nsince the campaign was prepared are skipped (`skipped_ineligible`).\n\n**Response (200):** `{batch_number, armed, skipped_ineligible, remaining,\ncampaign}`. The batch is sent in the background at the campaign's send\nspeed; the campaign pauses again when the batch is done (or completes\nwhen nobody is left).\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","send-next-batch"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"batch_size\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"all_remaining\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"fa71c2c2-5064-4637-aba7-e54b427995a9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","send-next-batch"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"batch_size\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"all_remaining\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"batch_number\": 692,\n  \"armed\": 5367,\n  \"campaign\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_text\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"message_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"attachment_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"target_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"browser_push_title\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"scheduled_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"completed_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_recipients\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sent_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"delivered_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"read_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"failed_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_rate_limit\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"should_skip_duplicates\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_window_hours\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_content\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"list_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"selected_channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"throttle_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_batch_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"current_batch_number\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"whatsapp_template_variable_mapping\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_split_config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_split_state\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_acknowledged_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_acknowledged_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"warmup_assessment\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sms_optout_link_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"skipped_ineligible\": 0,\n  \"remaining\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3a67951f-b086-4236-a6e4-c4031a5f589c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","send-next-batch"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"batch_size\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"all_remaining\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"363791f6-12ed-4e8e-8c69-d8014de511ab","name":"List Campaign Batches","request":{"name":"List Campaign Batches","description":{"content":"Per-batch delivery counts of a campaign sent in batches\n\nOne item per batch: `{batch_number, total, pending, sent, delivered,\nread, failed, skipped}`, oldest batch first. `remaining` is the number of\nrecipients waiting for a later batch, `current_batch_number` the batch\nthe campaign is on and `send_batch_size` the saved batch size. A campaign\nthat is not sent in batches returns an empty list.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","batches"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Batches per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d19e612a-4a71-48f7-8c7d-670501dfa43c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","batches"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"remaining\": 0,\n  \"current_batch_number\": 1092,\n  \"send_batch_size\": 4483\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"de0bf8e3-3484-41b7-b165-6e64ffc61463","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","batches"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"91fc6246-5e93-4b3f-b9e8-7f8232b62f1c","name":"Get Campaign Send Plan","request":{"name":"Get Campaign Send Plan","description":{"content":"Send plan: speed, batches and estimated duration\n\nRead-only estimate for the campaign's audience at its saved send speed\nand batch size, or at the values given as query parameters (to preview a\nchange before saving it). `effective_rate_per_minute` is the requested\nspeed capped by what the campaign's channels can send, and\n`rate_limited_by` says which of the two decides (`\"campaign\"` or\n`\"channel\"`). `channels[]` lists each channel's recipients and maximum\nmessages per second. `eta_seconds` estimates the time to send everyone\nwho is left (time paused between batches not included);\n`eta_seconds_per_batch` the time per batch. `pacing_available = false`\nmeans send speed and batches are not available for this account yet.\n\nOut-of-range query values return HTTP 422 `{code, message}`\n(`send_rate_limit_out_of_range`, `send_batch_size_invalid`).\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","send-plan"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"send_rate_limit","value":"4595","description":"Preview this send speed (messages per minute, 1-60000) instead of the saved one"},{"disabled":false,"key":"send_batch_size","value":"4595","description":"Preview this batch size (>= 1) instead of the saved one"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4aeaed45-cf3b-4ab4-9d11-faadf6adc314","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","send-plan"],"host":["{{baseUrl}}"],"query":[{"key":"send_rate_limit","value":"4595"},{"key":"send_batch_size","value":"4595"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"pacing_available\": true,\n  \"pacing_unavailable_reason\": \"string\",\n  \"total_recipients\": 0,\n  \"remaining\": 0,\n  \"channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requested_rate_per_minute\": 1108,\n  \"effective_rate_per_minute\": 4324.130843266144,\n  \"batch_size\": 6974,\n  \"batches\": 6853,\n  \"eta_seconds\": 2231,\n  \"eta_seconds_per_batch\": 3287,\n  \"rate_limited_by\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ea15154b-de98-4a1c-a205-92180b4daa75","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","send-plan"],"host":["{{baseUrl}}"],"query":[{"key":"send_rate_limit","value":"4595"},{"key":"send_batch_size","value":"4595"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cd6edea4-9c66-43c7-8589-e2084f8d7b58","name":"Retry Failed Recipients","request":{"name":"Retry Failed Recipients","description":{"content":"Retry failed recipients of a campaign\n\nResets FAILED recipients back to pending and re-queues them for sending.\nDesigned for \"top up, then retry\": an SMS campaign that was paused because\nthe prepaid SMS balance was used up can be re-driven with\n``{\"error_codes\": [\"insufficient_sms_balance\"]}`` once credit is available.\nSMS recipients the carrier rejected or did not deliver are re-driven with\n``{\"error_codes\": [\"sms_rejected_by_carrier\"]}`` / ``[\"sms_not_delivered\"]``\n(e.g. after the cause of an automatic pause was fixed).\nSMS recipients that failed because the SMS provider temporarily limited\nthe sending rate are re-driven with ``{\"error_codes\": [\"sms_rate_limited\"]}``\n-- lower the campaign's `send_rate_limit` or set a `send_batch_size`\nfirst (`PUT /campaigns/{id}`) so the retry does not hit the limit again.\nWith no body (or an empty list) every failed recipient is retried.\nUnknown codes return HTTP 422 listing the allowed codes.\n\nAllowed on campaigns in status `completed`, `failed` or `paused`. A\n`completed` or `failed` campaign returns to `sending` and any recipients\nstill pending are re-queued as well. A `paused` campaign STAYS paused: the\nfailed recipients are reset and go out together with the rest when the\ncampaign is resumed (`POST /campaigns/{id}/resume`). A retry never\nresumes a paused campaign.\n\n**Response:** `{\"success\": true, \"id\": \"<campaign_id>\", \"requeued\": <n>}`\nwhere `requeued` is the number of failed recipients reset. When the\ncampaign was paused and stays paused the body also carries\n`\"paused\": true` (the field is omitted otherwise).\n\n**Errors:**\n* HTTP 429 `{\"code\": \"retry_failed_cooldown\", \"message\", \"retry_after_seconds\"}`\n  (plus a `Retry-After` header) when failed recipients of this campaign\n  were retried less than 10 minutes ago.\n* HTTP 422 `{\"code\": \"retry_requires_send_speed\", \"message\"}` when the\n  campaign was paused because the SMS provider limited the sending rate\n  and has no send speed / batch size yet: set `send_rate_limit` or\n  `send_batch_size` with `PUT /campaigns/{id}` first.\n\nFor a split-sending campaign the reset recipients join the remaining\nplan, re-planned from now like `POST /resume`: only today's batch is sent\nimmediately, the rest follows on the next days.\n\nFor a campaign sent in batches the reset recipients join the current\nbatch and are sent at the campaign's send speed.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","retry-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"error_codes\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"880eef00-1336-40d0-872a-c5f2391187ab","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","retry-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"error_codes\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c25ad345-04f5-40ff-a073-76b39061a0ab","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","retry-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"error_codes\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"49721c33-aa6f-4243-b4db-852095cd48f0","name":"Cancel Campaign","request":{"name":"Cancel Campaign","description":{"content":"Cancel a scheduled, sending or paused campaign\n\nRecipients that were not sent yet are not sent (for a campaign sent in\nbatches this includes everyone waiting for a later batch). Messages\nalready sent are not recalled.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"9cf28f48-2644-4fca-aa8c-f000c7f9404e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"397ebaa4-4cdb-4f40-bc29-aa10d18b250a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fb44e16c-02b5-4287-8a9d-a01f1826ff63","name":"Schedule Campaign","request":{"name":"Schedule Campaign","description":{"content":"Schedule a campaign for future sending.\n\nAccepts a local datetime and IANA timezone string. The backend converts to UTC\nfor storage. The original timezone is preserved for display purposes.\n\nThe scheduled time must be at least 5 minutes in the future.\n\n`acknowledge_warmup_warning` (default false): same WhatsApp warm-up rule as\n`POST /send` -- 409 `warmup_acknowledgement_required` when required and not\ngiven. The acknowledgement is stored; the scheduled dispatch does not\nre-ask -- unless the audience, content, channels, template or split config\nis edited afterwards: that clears the acknowledgement and the dispatch then\nholds the campaign `paused` with `throttle_reason =\n\"warmup_acknowledgement_required\"` until `POST /resume` acknowledges.\nA split plan that would run too long: 422 `split_plan_too_long`.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scheduled_at\": \"1980-06-27T06:30:14.370Z\",\n  \"timezone\": \"string\",\n  \"acknowledge_warmup_warning\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"ea238198-f64f-4f16-8773-04056e0615b6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scheduled_at\": \"1980-06-27T06:30:14.370Z\",\n  \"timezone\": \"string\",\n  \"acknowledge_warmup_warning\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c17246d3-91d2-4e8a-837c-1a453e41cc69","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scheduled_at\": \"1980-06-27T06:30:14.370Z\",\n  \"timezone\": \"string\",\n  \"acknowledge_warmup_warning\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e801b372-ed41-4d47-a90c-338e6966c41c","name":"Cancel Schedule","request":{"name":"Cancel Schedule","description":{"content":"Cancel a scheduled campaign and move it back to draft.\n\nThis clears the scheduled_at time and reverts the status to draft,\nallowing the user to edit and reschedule.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","cancel-schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"df2f53d4-0af4-47d0-91bc-860c7b921dbf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","cancel-schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"message_text\": \"string\",\n  \"message_type\": \"string\",\n  \"attachment_id\": \"string\",\n  \"target_url\": \"string\",\n  \"browser_push_title\": \"string\",\n  \"channel_filter\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"draft\",\n  \"scheduled_at\": \"1996-09-16T02:33:30.960Z\",\n  \"started_at\": \"1958-04-10T17:28:21.693Z\",\n  \"completed_at\": \"1973-08-30T17:12:02.145Z\",\n  \"total_recipients\": 3422,\n  \"sent_count\": 1278,\n  \"delivered_count\": 276,\n  \"read_count\": 9237,\n  \"failed_count\": 7000,\n  \"send_rate_limit\": 6715,\n  \"should_skip_duplicates\": false,\n  \"duplicate_window_hours\": 6858,\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"2021-08-02T11:40:17.157Z\",\n  \"updated_at\": \"1993-10-19T11:48:29.718Z\",\n  \"channel_content\": {\n    \"key_0\": 9528.35262453713,\n    \"key_1\": 9518.510079632924\n  },\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"selected_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"throttle_reason\": \"string\",\n  \"timezone\": \"string\",\n  \"send_batch_size\": 7844,\n  \"current_batch_number\": 7428,\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_language\": \"string\",\n  \"whatsapp_template_variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_4\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"send_split_config\": {\n    \"key_0\": 9078,\n    \"key_1\": true,\n    \"key_2\": false\n  },\n  \"send_split_state\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": 9492.330365264603\n  },\n  \"warmup_acknowledged_at\": \"2010-07-02T09:19:36.898Z\",\n  \"warmup_acknowledged_by_user_id\": \"string\",\n  \"warmup_assessment\": {\n    \"key_0\": 4118.43954316504,\n    \"key_1\": false\n  },\n  \"sms_optout_link_enabled\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"74c3fe96-7ebe-4d24-bc52-b3f2e28c94e0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","cancel-schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"80d7d121-5501-4031-bb98-15340a00df45","name":"Get Campaign Statistics","request":{"name":"Get Campaign Statistics","description":{"content":"Get campaign statistics (sent, delivered, failed, etc.)\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","statistics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1c35cfc4-d920-42ce-8efc-11015d3ca332","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","statistics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": 3370,\n  \"key_1\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"065f9c85-fbff-487c-a5f0-a64ed57c1f10","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","statistics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8bc34ed4-232d-4c25-b90d-7aa6ac2df3b4","name":"Get Campaign Link Performance","request":{"name":"Get Campaign Link Performance","description":{"content":"Get aggregate link performance for a Reach (messenger) campaign.\n\nRolls per-recipient child rows up under their template via\n``COALESCE(parent_link_id, id)``. Each row shows total clicks, unique\nrecipients (per_recipient mode only), first/last click timestamps,\nand the template's short URL.\n\n**Required Scopes:** `campaigns:read`\n\nReturns:\n    ``{\"items\": [...]}`` — list of links sorted by clicks DESC. Empty\n    list if the campaign has no tracked links yet.","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","link-performance"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3086c723-07f0-4081-88d5-ce296b8a104b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","link-performance"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": 8584,\n  \"key_1\": \"string\",\n  \"key_2\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b2a92673-c62e-4d2f-9065-71fd0044c991","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","link-performance"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f25af0b9-cd20-4e4c-b048-5e2810acb2dd","name":"Get Campaign Unsubscribes","request":{"name":"Get Campaign Unsubscribes","description":{"content":"List recipients who opted out attributed to THIS messenger campaign.\n\nCampaign-attributed opt-outs from the ``contact_subscription_events`` SHARD\nledger, split by source and confidence:\n\n* LINK opt-outs (``method='link'``, ``attribution='exact'``) — recipient used\n  this campaign's own unsubscribe surface; attribution is certain.\n* KEYWORD opt-outs (``method='keyword'``, ``attribution='heuristic'``) — a\n  \"stop\"-style keyword opt-out attributed to the last campaign on that channel\n  within ``window_hours``. Only keyword opt-outs the heuristic matched to THIS\n  campaign appear here.\n\n``method_counts`` and ``attribution_counts`` cover the full result set;\n``items`` is the requested page ordered by opt-out time DESC\n(``page``/``page_size``, default 25). The UI labels link=exact vs\nkeyword=approximate off each item's ``attribution``.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a12f09d6-777e-485b-945d-86f2ec3c90bf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"attribution_counts\": {\n    \"exact\": 1,\n    \"heuristic\": 3\n  },\n  \"items\": [\n    {\n      \"attribution\": \"heuristic\",\n      \"channel_type\": \"whatsapp\",\n      \"contact_id\": \"c1a2b3\",\n      \"contact_name\": \"Jane Doe\",\n      \"matched_sent_at\": \"2026-09-13T09:00:00Z\",\n      \"method\": \"keyword\",\n      \"unsubscribed_at\": \"2026-09-14T10:30:00Z\",\n      \"window_hours\": 72\n    },\n    {\n      \"attribution\": \"exact\",\n      \"channel_type\": \"whatsapp\",\n      \"contact_id\": \"d4e5f6\",\n      \"contact_name\": \"John Roe\",\n      \"method\": \"link\",\n      \"unsubscribed_at\": \"2026-09-14T08:15:00Z\"\n    }\n  ],\n  \"method_counts\": {\n    \"keyword\": 3,\n    \"link\": 1\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"page_size\": 25,\n    \"total\": 4\n  },\n  \"total_unsubscribes\": 4\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b5035b58-5ae4-4bf5-9fd1-3ddbe7c87282","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fde44266-d608-4059-823d-0c14f439a3b7","name":"List Campaign Recipients","request":{"name":"List Campaign Recipients","description":{"content":"List a campaign's recipients (messenger/newsletter) with delivery status.\n\nGroups: `successful` = sent/delivered/read, `failed` = failed (skipped\nexcluded), `all` = the union of both, `held` = waiting for a later batch\n(campaigns sent in batches; not part of `all`). Each item:\n`{id, contact_id, name, identifier, status, error_reason, sent_at,\ndelivered_at, failed_at}`.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","recipients"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"all","description":"Recipient group: failed | successful | all | held"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"},{"disabled":false,"key":"search","value":"string","description":"Search recipient handle, contact name or phone"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"df11dca9-5355-400b-9fad-95366cf2c8c3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"all"},{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"search","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9fba9679-c3b9-451b-b211-84a548c72a55","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"all"},{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"search","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1b64e317-e54d-4f79-b925-07e3a4ea8dcd","name":"Retry Campaign Recipient","request":{"name":"Retry Campaign Recipient","description":{"content":"Retry a single failed recipient of a messenger/newsletter campaign.\n\nCalls the retry execution in ``CampaignService.retry_single_recipient`` and\nreturns the updated recipient item so the UI can update the row inline.\n\n- Recipient not found -> 404\n- Recipient not retryable in its current state -> 409\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"d3970684-5022-4c1e-9f8a-582b3984a5dd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"contact_id\": \"string\",\n  \"name\": \"string\",\n  \"identifier\": \"string\",\n  \"error_reason\": \"string\",\n  \"last_error_code\": \"string\",\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"failed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"904ffe80-43c3-4f29-8a84-0ed16ada7c33","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"19720cdc-e46e-4af8-9499-af3214a9bd40","name":"Delete Campaign Recipient","request":{"name":"Delete Campaign Recipient","description":{"content":"Remove a single recipient from a messenger/newsletter campaign.\n\nHard-deletes the per-recipient row (tenant + campaign ownership validated),\nthen recomputes the campaign's denormalized counters and drops\n`total_recipients` by 1. A recipient who was already sent the message\n(sent / delivered / read) cannot be removed: HTTP 409.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"471e674b-39e0-440d-9abb-3aaa0faf366c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"43567ad8-aeb1-4e6d-b518-1f3cfb29a75b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c137de43-2def-4230-b78b-5a7ea312ac81","name":"Remove Failed Campaign Recipients","request":{"name":"Remove Failed Campaign Recipients","description":{"content":"Bulk-remove all failed recipients from a messenger/newsletter campaign.\n\nHard-deletes every failed-group row for this campaign, recomputes the\ncampaign counters and drops `total_recipients` by the number removed. This\nis DISTINCT from `POST /{campaign_id}/retry-failed`, which re-queues failed\nrecipients instead of deleting them.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","recipients","remove-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"9079bb31-fc02-4398-8315-b92bf264b743","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients","remove-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"removed_count\": 8419,\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"10ac5f94-bd26-4064-8a9a-80cac90dc151","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients","remove-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3fb6f22f-5c2e-4861-8a51-22ed5dbdcfde","name":"Unsubscribe Campaign Recipient","request":{"name":"Unsubscribe Campaign Recipient","description":{"content":"Opt a messenger/newsletter recipient's contact out of this campaign's lists.\n\nThis is DISTINCT from `DELETE /{campaign_id}/recipients/{recipient_id}`\n(\"Remove\"), which only deletes the per-recipient row and does NOT change\nsubscription state. This endpoint resolves the recipient's contact, computes\nthe campaign's originating list(s) (`campaign_lists` ∩ the contact's\ncurrently-subscribed lists) and opts the contact out of all of them via the\nsubscription chokepoint, writing the opt-out ledger with campaign attribution\n(`method='manual'`).\n\n- Recipient (or its campaign) not found for this tenant -> 404\n- Recipient is an anonymous subscriber with no linked contact -> 422\n- Contact subscribed to none of the campaign's lists (or the campaign targets\n  no lists) -> 200 with an empty `unsubscribed_lists`\n- Contact already opted out of all of the campaign's lists -> 200 with\n  `already_unsubscribed: true`\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id","unsubscribe"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"00f6b45b-1410-4281-8148-c3f7243120b0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id","unsubscribe"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"unsubscribed_lists\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"already_unsubscribed\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8b8c2c41-2f2f-426c-84dd-048009607715","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","campaigns",":campaign_id","recipients",":recipient_id","unsubscribe"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"785844f4-5dde-423c-a4c2-6b457d6fa0b4","name":"Canned Responses","description":{"content":"Manage pre-saved quick reply templates for agents. Supports personal and shared responses with shortcut triggers.","type":"text/plain"},"item":[{"id":"88d0b0cf-aab2-499b-a9ab-078ce8760d95","name":"List Canned Responses","request":{"name":"List Canned Responses","description":{"content":"List canned responses visible to the current user.\n\nReturns the user's own responses and all shared responses. Users with\n`canned_responses:settings` scope see all responses in the tenant.\n\n**Required Scopes:** `canned_responses:read`","type":"text/plain"},"url":{"path":["api","v1","canned-responses"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"category","value":"string","description":"Filter by category"},{"disabled":false,"key":"search","value":"string","description":"Search in title, content, and shortcut"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"80423c5d-bea4-49f6-90bc-f5d0b2172fbf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"category","value":"string"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0db89d2d-3372-4a8e-93da-c240d265c0b2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","canned-responses"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"category","value":"string"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"66758b8e-c031-4c61-a86d-6db52237006f","name":"Create Canned Response","request":{"name":"Create Canned Response","description":{"content":"Create a new canned response.\n\nBy default, responses are personal (visible only to you). Set `is_shared=true`\nto make it visible to all team members (requires `canned_responses:settings` scope).\n\n**Required Scopes:** `canned_responses:create`","type":"text/plain"},"url":{"path":["api","v1","canned-responses"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"category\": \"Greetings\",\n  \"content\": \"Hello! Thank you for contacting us. How can I help you today?\",\n  \"is_shared\": true,\n  \"shortcut\": \"greeting\",\n  \"title\": \"Standard Greeting\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"99f148ee-c633-4663-bb67-6d87aeffe68b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"category\": \"Greetings\",\n  \"content\": \"Hello! Thank you for contacting us. How can I help you today?\",\n  \"is_shared\": true,\n  \"shortcut\": \"greeting\",\n  \"title\": \"Standard Greeting\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"content\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2c8777c3-94d8-4531-acd3-591c9fc5809c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","canned-responses"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"category\": \"Greetings\",\n  \"content\": \"Hello! Thank you for contacting us. How can I help you today?\",\n  \"is_shared\": true,\n  \"shortcut\": \"greeting\",\n  \"title\": \"Standard Greeting\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1fd4ea37-b8e1-4afc-aadb-ff5a7d88be0a","name":"List Categories","request":{"name":"List Categories","description":{"content":"Get unique categories for canned responses.\n\nReturns all categories from responses visible to the current user.\n\n**Required Scopes:** `canned_responses:read`","type":"text/plain"},"url":{"path":["api","v1","canned-responses","categories"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1ac4c8a0-4eea-4a34-ae7b-b51ea93887e0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses","categories"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"categories\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a068aa1d-dbf2-44b2-8a05-437330d37195","name":"Get By Shortcut","request":{"name":"Get By Shortcut","description":{"content":"Get a canned response by its shortcut.\n\nUsed for slash command lookups (e.g., /greeting). The shortcut is\ncase-insensitive and the leading slash is optional.\n\n**Required Scopes:** `canned_responses:read`","type":"text/plain"},"url":{"path":["api","v1","canned-responses","by-shortcut",":shortcut"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"shortcut","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a1382e1b-a80d-4760-bb79-0d8de4c077a8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses","by-shortcut",":shortcut"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"shortcut","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"content\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"675eb171-d342-45c4-aca8-66ff46069a64","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","canned-responses","by-shortcut",":shortcut"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"shortcut","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"606a2d3d-c931-4ec8-9726-2ddf8bb9ba49","name":"Get Canned Response","request":{"name":"Get Canned Response","description":{"content":"Get a specific canned response by ID.\n\n**Required Scopes:** `canned_responses:read`","type":"text/plain"},"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4c1f312b-65d2-4fdb-bb49-17ac6929446a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"content\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6ea1465f-ddd1-4be3-a517-72773fb1131b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1cd07095-c289-4c20-b040-828244cc4df0","name":"Update Canned Response","request":{"name":"Update Canned Response","description":{"content":"Update a canned response.\n\nUsers can only update their own responses. Users with `canned_responses:settings`\nscope can update any response.\n\n**Required Scopes:** `canned_responses:update`","type":"text/plain"},"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"Hi there! Thanks for reaching out. How may I assist you?\",\n  \"title\": \"Updated Greeting\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1957e5bb-488c-4da6-a1d7-fcec0ee5ee87","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"Hi there! Thanks for reaching out. How may I assist you?\",\n  \"title\": \"Updated Greeting\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"content\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"77ec937d-c0ad-453b-9340-c9aeacd91354","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"Hi there! Thanks for reaching out. How may I assist you?\",\n  \"title\": \"Updated Greeting\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c262c4d0-bff8-404f-8d49-19fbb8a008c8","name":"Delete Canned Response","request":{"name":"Delete Canned Response","description":{"content":"Delete a canned response.\n\nUsers can only delete their own responses. Users with `canned_responses:settings`\nscope can delete any response.\n\n**Required Scopes:** `canned_responses:delete`","type":"text/plain"},"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e213531c-73a4-4550-9351-a04b5c80028d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"55cbea9a-4c57-45d1-86f8-4cd48a2dec0e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","canned-responses",":canned_response_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"canned_response_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"069acd71-efb1-4c4f-b3cd-e95a44b729a0","name":"Channel Connect","description":{"content":"Connect new messaging channels (WhatsApp, Telegram, Instagram, etc.) via guided setup wizards with token-based authentication.","type":"text/plain"},"item":[{"id":"6a6c8fdc-60d0-4198-bd50-a8e39f7f325c","name":"Create Token","request":{"name":"Create Token","description":{"content":"Create a new channel connect token.\n\n**Required Scopes:** `channels:create`\n\nGenerates a secure, time-limited token that can be shared with partners\nor clients to allow them to connect messaging channels without full\nplatform access.\n\nIMPORTANT: The raw token is returned ONLY ONCE. Save it securely.\n\n**Example:**\n```json\n{\n    \"name\": \"Acme Corp Setup\",\n    \"allowed_channel_types\": [\"telegram\", \"whatsapp\"],\n    \"expires_in_hours\": 48,\n    \"max_uses\": 5,\n    \"partner_name\": \"Acme Corporation\"\n}\n```","type":"text/plain"},"url":{"path":["api","v1","channel-connect-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"allowed_channel_types\": [\n    \"string\"\n  ],\n  \"name\": \"string\",\n  \"expires_in_hours\": 24,\n  \"max_uses\": 10,\n  \"use_window_minutes\": 30,\n  \"allowed_channel_modes\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"partner_name\": \"string\",\n  \"partner_redirect_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"fa7ba079-e93d-4813-b939-5d019eff333e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"allowed_channel_types\": [\n    \"string\"\n  ],\n  \"name\": \"string\",\n  \"expires_in_hours\": 24,\n  \"max_uses\": 10,\n  \"use_window_minutes\": 30,\n  \"allowed_channel_modes\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"partner_name\": \"string\",\n  \"partner_redirect_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"token_prefix\": \"string\",\n  \"connect_url\": \"string\",\n  \"max_uses\": 7652,\n  \"current_uses\": 8576,\n  \"use_window_minutes\": 3270,\n  \"expires_at\": \"string\",\n  \"is_revoked\": true,\n  \"is_locked\": false,\n  \"is_valid\": true,\n  \"remaining_uses\": 4942,\n  \"created_at\": \"string\",\n  \"token\": \"string\",\n  \"name\": \"string\",\n  \"allowed_channel_types\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_channel_modes\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"partner_name\": \"string\",\n  \"partner_redirect_url\": \"string\",\n  \"first_used_at\": \"string\",\n  \"revoked_at\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"warning\": \"Save this token now - it will not be shown again\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3c63bbc7-0d53-4386-88ba-f795b35d2f67","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"allowed_channel_types\": [\n    \"string\"\n  ],\n  \"name\": \"string\",\n  \"expires_in_hours\": 24,\n  \"max_uses\": 10,\n  \"use_window_minutes\": 30,\n  \"allowed_channel_modes\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"partner_name\": \"string\",\n  \"partner_redirect_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"44d7ca4a-6ff7-41b0-8af9-d10f80b262ec","name":"List Tokens","request":{"name":"List Tokens","description":{"content":"List channel connect tokens for this tenant.\n\n**Required Scopes:** `channels:read`\n\nBy default, only shows active (non-expired, non-revoked) tokens.\nUse query parameters to include inactive tokens.","type":"text/plain"},"url":{"path":["api","v1","channel-connect-tokens"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_expired","value":"false","description":"Include expired tokens"},{"disabled":false,"key":"include_revoked","value":"false","description":"Include revoked tokens"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6fc04d48-a8bc-45d5-abc0-fa9d64115d44","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens"],"host":["{{baseUrl}}"],"query":[{"key":"include_expired","value":"false"},{"key":"include_revoked","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cfd54b2b-e0ff-4bff-b0f7-95471d68fbfe","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens"],"host":["{{baseUrl}}"],"query":[{"key":"include_expired","value":"false"},{"key":"include_revoked","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ebd67843-f9a7-496c-baf8-1680e3f1bc39","name":"Delegate Connect","request":{"name":"Delegate Connect","description":{"content":"Hand a channel connect over to a colleague by email.\n\n**Required Scopes:** `channels:create`\n\nCreates a short-lived connect token scoped to the given channel types and\nmails the link to `email`. Intended for the channel setup wizard, where the\nperson doing the setup often lacks the third-party platform access the\nconnect needs (typically: they are not an admin of the Meta Business\nportfolio that owns the WhatsApp number or the Facebook Page).\n\nThe recipient needs no SendSeven account — the link is the credential — so it\nis deliberately restrictive compared to a partner token: two uses (one real\nattempt plus one retry), a 60-minute window after first use, and a single\nplatform.\n\nThe token is created BEFORE the email is attempted, and `connect_url` is\nalways returned. A failed send therefore degrades to \"copy the link and send\nit yourself\" rather than losing the token.","type":"text/plain"},"url":{"path":["api","v1","channel-connect-tokens","delegate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_types\": [\n    \"whatsapp\"\n  ],\n  \"email\": \"it@example.com\",\n  \"expires_in_hours\": 48,\n  \"note\": \"You're the admin on our Meta Business account - could you connect this?\",\n  \"recipient_name\": \"Sam\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6b51a978-41a1-4578-8341-f9b4c44aa456","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens","delegate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_types\": [\n    \"whatsapp\"\n  ],\n  \"email\": \"it@example.com\",\n  \"expires_in_hours\": 48,\n  \"note\": \"You're the admin on our Meta Business account - could you connect this?\",\n  \"recipient_name\": \"Sam\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"token_id\": \"string\",\n  \"connect_url\": \"string\",\n  \"expires_at\": \"string\",\n  \"email_sent\": false,\n  \"sent_to\": \"string\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"37d8e8c7-c6f7-4629-987b-6a70b9ff7aab","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens","delegate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_types\": [\n    \"whatsapp\"\n  ],\n  \"email\": \"it@example.com\",\n  \"expires_in_hours\": 48,\n  \"note\": \"You're the admin on our Meta Business account - could you connect this?\",\n  \"recipient_name\": \"Sam\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9def7079-9406-44f2-a70d-c8e0a085f4ec","name":"Get Token","request":{"name":"Get Token","description":{"content":"Get details of a specific channel connect token.\n\n**Required Scopes:** `channels:read`\n\nNote: The raw token value is NOT included - it was only shown at creation.","type":"text/plain"},"url":{"path":["api","v1","channel-connect-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"479674f0-430b-494d-b8ca-452ba3da2332","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"token_prefix\": \"string\",\n  \"max_uses\": 7134,\n  \"current_uses\": 4725,\n  \"use_window_minutes\": 6501,\n  \"expires_at\": \"string\",\n  \"is_revoked\": false,\n  \"is_locked\": false,\n  \"is_valid\": false,\n  \"remaining_uses\": 4133,\n  \"created_at\": \"string\",\n  \"name\": \"string\",\n  \"allowed_channel_types\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_channel_modes\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"partner_name\": \"string\",\n  \"partner_redirect_url\": \"string\",\n  \"connect_url\": \"string\",\n  \"first_used_at\": \"string\",\n  \"revoked_at\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b3751602-196c-46dc-9391-518c98b81d87","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c0656ae2-8579-44fa-934e-83acbe237622","name":"Revoke Token","request":{"name":"Revoke Token","description":{"content":"Revoke a channel connect token.\n\n**Required Scopes:** `channels:delete`\n\nRevoking a token immediately prevents any further use.\nThis action cannot be undone - create a new token if needed.\n\nOptionally provide a reason for audit purposes.","type":"text/plain"},"url":{"path":["api","v1","channel-connect-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{"mode":"raw","raw":"{\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"28dd8c06-b4c9-478b-9163-002ca0ccfbd1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{"mode":"raw","raw":"{\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a9c39da3-a15a-4ca3-8fd3-80aee85e6e5a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{"mode":"raw","raw":"{\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ec84a28f-768f-4675-8492-45e0ef402e9a","name":"Get Token Audit Logs","request":{"name":"Get Token Audit Logs","description":{"content":"Get audit logs for a specific channel connect token.\n\n**Required Scopes:** `channels:read`\n\nReturns all events related to this token including:\n- Token creation\n- Public page views\n- Connection attempts (success/failure)\n- Revocation","type":"text/plain"},"url":{"path":["api","v1","channel-connect-tokens",":token_id","audit-logs"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"99f9f3f5-36da-4608-ae8f-dedaeea1cad6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens",":token_id","audit-logs"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"455b965d-a694-440d-a4af-6e52f30852ec","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channel-connect-tokens",":token_id","audit-logs"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"feb952ac-5949-451a-a827-fb4cd429ab6a","name":"Channels","description":{"content":"Manage connected messaging channels (WhatsApp, Telegram, Messenger, Instagram, SMS, Email). View capabilities, profiles, and configuration.","type":"text/plain"},"item":[{"id":"5147a6da-7a9d-4af8-ace7-e0ea48553356","name":"Check Rcs Capabilities","request":{"name":"Check Rcs Capabilities","description":{"content":"Check whether one number can receive RCS from this agent.\n\n**Required Scopes:** `channels:read`\n\nAlso requires the tenant's `rcs_enabled` feature flag (403 otherwise).\n\nReturns **200 with `reachable: false`** for every kind of unreachable —\nthis is an answer, not an error. Google answers 404 whether the device has\nno RCS, has RCS switched off, sits on a carrier the agent is not launched\non, or belongs to a tester who has not accepted the invite, and it cannot\ntell those apart, so neither can we.\n\nSide effect: a reachable probe promotes a `pending` tester on this channel\nto `accepted` and stamps `accepted_at`. It is the only acceptance signal\nGoogle provides.","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","rcs","capabilities"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"msisdn","value":"string","description":"(Required) Number to probe"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) RCS channel id"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4fc77f1d-81df-44db-9941-80f774ac6243","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","rcs","capabilities"],"host":["{{baseUrl}}"],"query":[{"key":"msisdn","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) RCS channel id"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"msisdn\": \"string\",\n  \"reachable\": false,\n  \"checked_at\": \"string\",\n  \"features\": [\n    \"string\",\n    \"string\"\n  ],\n  \"carrier\": \"string\",\n  \"cached\": false,\n  \"reason\": \"string\",\n  \"tester_status\": \"accepted\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b49d57b7-34db-4554-9423-e64a7bb78de4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","rcs","capabilities"],"host":["{{baseUrl}}"],"query":[{"key":"msisdn","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) RCS channel id"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cb2ff7f4-35a6-4be8-8ce2-3d372020afbd","name":"Get Channel Health","request":{"name":"Get Channel Health","description":{"content":"Get health status of all channel integrations.\n\nReturns the connection status of all active channel integrations,\nhighlighting any that have errors that need attention.\n\n**Required Scopes:** `channels:read`\n\nCurrently supports:\n- Email integrations (Gmail, SMTP/IMAP, etc.)\n- Messaging channels (Messenger / Instagram) whose access token was\n  invalidated (Graph API code=190) and need reconnecting. These appear\n  with `channel_type` = the messaging type (\"messenger\", \"instagram\", ...),\n  `connection_status` = \"disconnected\", `last_error` = the\n  disconnection_reason (\"token_invalidated\"), and `last_error_at` = when\n  the channel was disconnected.\n\nFuture support planned for:\n- WhatsApp Business API connections\n- Telegram bot connections","type":"text/plain"},"url":{"path":["api","v1","channels","health"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2ac72d7b-a24f-42eb-bd93-552f567a7832","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels","health"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"has_errors\": true,\n  \"error_count\": 7604,\n  \"integrations\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ab505e67-9d94-437b-a835-c29419604e47","name":"Get Channel Types","request":{"name":"Get Channel Types","description":{"content":"Get available channel types.\n\nReturns a list of available (implemented) channel types,\ncoming soon channel types, and detailed info for all types.\n\nThis endpoint is public (no auth required) as it's used during\nchannel setup and onboarding flows.","type":"text/plain"},"url":{"path":["api","v1","channels","types"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f622ded5-b5ed-4ffe-9090-aa21a95c7c41","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels","types"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"available\": [\n    \"string\",\n    \"string\"\n  ],\n  \"coming_soon\": [\n    \"string\",\n    \"string\"\n  ],\n  \"all_types\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"af9f9b2c-0795-48b1-967d-34e2ec6faa65","name":"Create Channel","request":{"name":"Create Channel","description":{"content":"Connect a new messaging channel\n\n**Required Scopes:** `channels:create`\n\nRCS channels cannot be created here: SendSeven sets up and manages RCS\nagents (403 `rcs_managed_by_sendseven`).","type":"text/plain"},"url":{"path":["api","v1","channels"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_type\": \"whatsapp\",\n  \"config\": {\n    \"phone_number_id\": \"123456789012345\",\n    \"waba_id\": \"987654321098765\"\n  },\n  \"identifier\": \"491521558086\",\n  \"name\": \"Main WhatsApp Business\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d075d8ed-2dad-4b54-8ad5-6d8b398ae66b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_type\": \"whatsapp\",\n  \"config\": {\n    \"phone_number_id\": \"123456789012345\",\n    \"waba_id\": \"987654321098765\"\n  },\n  \"identifier\": \"491521558086\",\n  \"name\": \"Main WhatsApp Business\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_type\": \"email\",\n  \"name\": \"string\",\n  \"identifier\": \"string\",\n  \"is_active\": true,\n  \"created_at\": \"1989-06-23T15:02:47.600Z\",\n  \"phone_number_formatted\": \"string\",\n  \"is_verified\": false,\n  \"is_coexistence\": false,\n  \"activation_status\": \"string\",\n  \"setup_pending_reason\": \"string\",\n  \"avatar_url\": \"string\",\n  \"rcs_agent_id\": \"string\",\n  \"rcs_partner_id\": \"string\",\n  \"rcs_launch_state\": {\n    \"key_0\": \"string\"\n  },\n  \"rcs_message_traffic_type\": \"string\",\n  \"rcs_pricing_mode\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d25663c7-a5a4-4299-acbf-a360f11dd9e5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_type\": \"whatsapp\",\n  \"config\": {\n    \"phone_number_id\": \"123456789012345\",\n    \"waba_id\": \"987654321098765\"\n  },\n  \"identifier\": \"491521558086\",\n  \"name\": \"Main WhatsApp Business\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f4f59dae-d20d-4817-83fa-8ff3d9fb660e","name":"List Channels","request":{"name":"List Channels","description":{"content":"List all active (non-archived) channels for the tenant.\n\nAny authenticated team member can list channels (used for app initialization).\n\nSecurity model (inverted May 2026):\n    Non-admin/non-owner callers ALWAYS see only the channels reachable\n    through their accessible Custom Inboxes -- regardless of the\n    ``for_compose`` query param. Previously this filter was opt-in via\n    ``for_compose=true``, which meant a restricted user could drop the\n    param and see every channel in the tenant (UX leak / info disclosure\n    -- they still couldn't send, but channel names appeared in any\n    listing/picker). The filter is now mandatory for non-admins.\n\n    ``for_compose`` is still accepted (and ignored for the security path)\n    for API back-compat. Admins/owners always see every channel.\n\n    If ``accessible_channel_ids_for_user`` returns ``None`` (zero-inbox\n    tenant fallback for the Custom Inboxes feature), no extra filter is\n    applied -- preserving pre-feature behaviour for tenants that have\n    never configured inboxes.\n\n**🔐 Required Scopes:** `channels:read`\n","type":"text/plain"},"url":{"path":["api","v1","channels"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"for_compose","value":"false"},{"disabled":false,"key":"channel_type","value":"string","description":"Optional: filter results to a single channel_type (e.g. 'whatsapp')"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"977e0363-1087-433a-ab3f-1cc1d989b8a6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels"],"host":["{{baseUrl}}"],"query":[{"key":"for_compose","value":"false"},{"key":"channel_type","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"identifier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"phone_number_formatted\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_coexistence\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"setup_pending_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_partner_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_launch_state\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_message_traffic_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_pricing_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"identifier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"phone_number_formatted\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_coexistence\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"activation_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"setup_pending_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_partner_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_launch_state\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_message_traffic_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_pricing_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"0cb03c3c-9acd-456c-9a98-302f04aa7c40","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels"],"host":["{{baseUrl}}"],"query":[{"key":"for_compose","value":"false"},{"key":"channel_type","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2e5a7acc-544b-4df1-9448-5be6816bcd5b","name":"Get Comment Capabilities","request":{"name":"Get Comment Capabilities","description":{"content":"Can these channels receive comments? (\"Comments -> Private Reply\" beta)\n\n**Required Scopes:** `channels:read`\n\nReports, for every non-archived Instagram and Facebook Messenger channel,\nwhether comment webhooks would actually arrive today — so the UI can show a\n\"reconnect to enable comments\" prompt instead of offering a feature that\nwould silently never fire.\n\n- **Instagram** needs the `instagram_business_manage_comments` permission,\n  which is fixed at connect time and can only be added by reconnecting.\n- **Facebook Messenger** needs the Page subscribed to the `feed` webhook\n  field. This is read LIVE from Facebook on every call, because the\n  subscription can change without any change to the channel.\n\n**Fail-closed:** `can_receive_comments` is `true` only when positively\nverified. A channel connected before we recorded granted permissions\nreports `false` / `scope_granted_unknown`, never an assumed `true`.\n\n`beta_enabled` reports the tenant's feature-flag enrolment separately, so\n\"not in the beta\" and \"in the beta but needs a reconnect\" are\ndistinguishable. Read-only — nothing is subscribed or changed.","type":"text/plain"},"url":{"path":["api","v1","channels","comment-capabilities"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"db9f31c9-1a3f-4b27-8ad3-93f28f758783","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels","comment-capabilities"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"beta_enabled\": false,\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dbcc8701-7683-4d20-b02f-1379523451d0","name":"List read-receipt and typing-indicator support per channel type","request":{"name":"List read-receipt and typing-indicator support per channel type","description":{"content":"Which channel types support read receipts and typing indicators.\n\nReturns one item for **every** channel type (unsupported ones report\n`false`), so you can decide before calling\n`POST /messages/{message_id}/read` or\n`POST /conversations/{conversation_id}/typing`.\n\n- `read`: the contact can be shown that their message was read.\n- `typing`: the contact can be shown a typing indicator.\n- `typing_off`: the indicator can be cleared explicitly (otherwise\n  `state: \"off\"` is a no-op and the indicator ends on its own).\n- `typing_ttl_seconds`: how long one typing call is shown; `null` means\n  until cleared or until you reply.\n- `typing_requires_message`: the platform ties typing to a received\n  message (the latest inbound message is used when you pass none).\n\nFor a single connected channel, the same block is returned as\n`sender_actions` on `GET /channels/{channel_id}/capabilities`.\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","channels","sender-actions"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"914507ec-8c5a-4134-970b-640f22925f1c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels","sender-actions"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ba0b2bab-252f-49f2-8ec6-64b19da347cf","name":"Get Channel","request":{"name":"Get Channel","description":{"content":"Get a specific channel\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f804f5c7-06d5-4db4-92e8-27429956481d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_type\": \"email\",\n  \"name\": \"string\",\n  \"identifier\": \"string\",\n  \"is_active\": true,\n  \"created_at\": \"1989-06-23T15:02:47.600Z\",\n  \"phone_number_formatted\": \"string\",\n  \"is_verified\": false,\n  \"is_coexistence\": false,\n  \"activation_status\": \"string\",\n  \"setup_pending_reason\": \"string\",\n  \"avatar_url\": \"string\",\n  \"rcs_agent_id\": \"string\",\n  \"rcs_partner_id\": \"string\",\n  \"rcs_launch_state\": {\n    \"key_0\": \"string\"\n  },\n  \"rcs_message_traffic_type\": \"string\",\n  \"rcs_pricing_mode\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"575adb73-1eb8-4a7e-bd39-b4ab6d256772","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e30be246-b071-488a-b312-320c2b3a1489","name":"Update Channel","request":{"name":"Update Channel","description":{"content":"Update a channel configuration\n\n**Required Scopes:** `channels:update`\n\nOn an RCS channel only `name` and `is_active` may change here; an\n`identifier` or `config` change answers 403 `rcs_managed_by_sendseven`\n(SendSeven manages RCS agents and their credentials).","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"is_active\": true,\n  \"name\": \"Updated WhatsApp Business\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2e8d7cc4-9dae-4dba-81a5-d8c4d084a59e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"is_active\": true,\n  \"name\": \"Updated WhatsApp Business\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_type\": \"email\",\n  \"name\": \"string\",\n  \"identifier\": \"string\",\n  \"is_active\": true,\n  \"created_at\": \"1989-06-23T15:02:47.600Z\",\n  \"phone_number_formatted\": \"string\",\n  \"is_verified\": false,\n  \"is_coexistence\": false,\n  \"activation_status\": \"string\",\n  \"setup_pending_reason\": \"string\",\n  \"avatar_url\": \"string\",\n  \"rcs_agent_id\": \"string\",\n  \"rcs_partner_id\": \"string\",\n  \"rcs_launch_state\": {\n    \"key_0\": \"string\"\n  },\n  \"rcs_message_traffic_type\": \"string\",\n  \"rcs_pricing_mode\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3dc85442-a0f8-4281-ab08-ed9ef5ce6872","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"is_active\": true,\n  \"name\": \"Updated WhatsApp Business\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fdf35c0c-a88f-4040-bdcb-7ec46d440b83","name":"Delete Channel","request":{"name":"Delete Channel","description":{"content":"Archive (soft-delete) a channel.\n\nThis preserves the channel record for billing history and audit purposes while:\n- Marking it as archived (hidden from normal listings)\n- Clearing sensitive credentials from config\n- Recording who archived it and when\n\nFor WhatsApp channels, the phone number is also deregistered from Meta.\nFor Messenger/Instagram channels, the Facebook Page is unsubscribed from\nour app so the asset can be cleanly re-connected later.\n\n**Required Scopes:** `channels:delete`\n\n**Returns:**\n- `success`: Boolean indicating if archive succeeded\n- `message`: Status message\n- `channel_id`: The archived channel's ID","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"98177dfb-d049-47e1-aab3-8862d52a83e6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"message\": \"string\",\n  \"channel_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"26077973-02c0-4cdc-8da2-f392b1929087","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dfcdfea1-72a0-4dc3-b19e-e4eb9c18680e","name":"Get Channel Capabilities","request":{"name":"Get Channel Capabilities","description":{"content":"Get the feature capabilities matrix for a specific channel.\n\nReturns what message types and interactive elements are supported\nby the channel's messaging platform.\n\n**Required Scopes:** `channels:read`\n\n**Feature Categories:**\n- **Basic message types:** text, images, videos, audio, voice (PTT), documents, stickers\n- **Rich content:** location, contacts\n- **Engagement:** reactions\n- **Interactive elements:** interactive_buttons, interactive_lists, carousels, quick_replies\n- **Other:** templates (pre-approved message templates), proxy (proxy/passthrough support)\n\n**Response format:**\n- Boolean fields indicate simple support (true/false)\n- Object fields (e.g., interactive_buttons) include limits like max_buttons","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","capabilities"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"281d44ab-302c-44cd-98fd-3ce0c585d84d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","capabilities"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"channel_name\": \"Main WhatsApp Business\",\n  \"channel_type\": \"whatsapp\",\n  \"features\": {\n    \"audio\": true,\n    \"carousels\": {\n      \"max_cards\": 10,\n      \"requires_template\": true,\n      \"supported\": true\n    },\n    \"contacts\": true,\n    \"documents\": true,\n    \"images\": true,\n    \"interactive_buttons\": {\n      \"max_buttons\": 3,\n      \"supported\": true\n    },\n    \"interactive_lists\": {\n      \"max_rows_per_section\": 10,\n      \"max_sections\": 10,\n      \"supported\": true\n    },\n    \"location\": true,\n    \"proxy\": true,\n    \"quick_replies\": false,\n    \"reactions\": true,\n    \"stickers\": true,\n    \"templates\": true,\n    \"text\": true,\n    \"videos\": true\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"68a1d3d7-010c-4e34-a1b1-d0abb31c3b62","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","capabilities"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5a315bef-8810-42e3-937f-9d9e638bcb24","name":"Get Channel Comment Capability","request":{"name":"Get Channel Comment Capability","description":{"content":"Can THIS channel receive comments? (\"Comments -> Private Reply\" beta)\n\n**Required Scopes:** `channels:read`\n\nSingle-channel form of `GET /channels/comment-capabilities` — same\nfail-closed contract and the same `reason` codes. A channel of a type that\ncan never do comments returns `comments_supported: false` with reason\n`channel_type_not_supported` rather than an error.\n\nRead-only: nothing is subscribed, changed or repaired.","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","comment-capability"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a68c088b-4ea3-4765-a0ad-6c227941a081","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","comment-capability"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"channel_name\": \"string\",\n  \"comments_supported\": true,\n  \"can_receive_comments\": false,\n  \"reconnect_required\": true,\n  \"resubscribe_required\": false,\n  \"reason\": \"string\",\n  \"checked_at\": \"1966-10-27T01:46:52.116Z\",\n  \"identifier\": \"string\",\n  \"detail\": \"string\",\n  \"missing_scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"granted_scopes_known\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2f496a12-6cd9-4d72-8bdf-496109501c6a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","comment-capability"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2cdc4c67-c297-4951-b78b-9c1f9516ea86","name":"Get Channel File Support","request":{"name":"Get Channel File Support","description":{"content":"Get the supported file formats and size limits for a specific channel.\n\nReturns which file types (extensions) and categories (image, video, audio, document)\nare supported by the channel, along with maximum file size per category.\n\nUseful for client-side validation before uploading/sending attachments.\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","file-support"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d7920e85-02df-4060-9a5f-83c36e4a7d7c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","file-support"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"58029c60-8edb-4711-b157-ee2dbe4b00b6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","file-support"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a343d79b-e972-4589-8e51-5f1577c5bc95","name":"Refresh Channel Webhook","request":{"name":"Refresh Channel Webhook","description":{"content":"Re-register the webhook for a channel.\n\nThis is useful when:\n- Webhook URL needs to be updated\n- Webhook registration failed initially\n- You want to verify the webhook is correctly set\n\nWebhooks are always registered to point to production (api.sendseven.com)\nto ensure proper message delivery and staging forwarding.\n\n**Required Scopes:** `channels:update`\n\n**Supported channels:** Telegram (other channels have webhooks configured externally)","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","refresh-webhook"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"9a86bcdb-0e57-4175-b5de-999e271937ef","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","refresh-webhook"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"message\": \"string\",\n  \"webhook_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"47ab9149-d675-4160-9150-b5043add96f2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","refresh-webhook"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d04e44f5-5d56-418e-8de8-fec42856feab","name":"Get Channel Profile","request":{"name":"Get Channel Profile","description":{"content":"Fetch channel profile from platform API (WhatsApp or Telegram).\n\nThis endpoint fetches the current profile data directly from the\nmessaging platform's API. No data is stored locally.\n\n**Required Scopes:** `channels:read`\n\n**Supported Channels:**\n- **WhatsApp:** Returns business profile (about, address, description, email,\n  profile picture, websites, vertical)\n- **Telegram:** Returns bot profile (name, username, description,\n  short description, commands, permissions)\n\n**Response:**\n- `channel_id`: The channel's ID\n- `channel_type`: \"whatsapp\" or \"telegram\"\n- `channel_name`: The channel's display name\n- `whatsapp`: WhatsApp-specific profile data (if applicable)\n- `telegram`: Telegram-specific profile data (if applicable)","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"86cf36ca-4f65-4ea1-9d27-cfb8168783a9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"channel_name\": \"string\",\n  \"whatsapp\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"telegram\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"21b56b3d-87ec-4ad5-9cab-2da12216ca01","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"da6bafac-517b-4cae-9cc9-14d93223c73b","name":"Update Channel Profile","request":{"name":"Update Channel Profile","description":{"content":"Update channel profile on platform API.\n\nThis endpoint updates the profile data directly on the messaging\nplatform's API. Only provided fields are updated.\n\n**Required Scopes:** `channels:update`\n\n**Supported Channels:**\n\n**WhatsApp Profile Fields:**\n- `about`: Short description (max 139 chars, shown in profile)\n- `address`: Business address (max 256 chars)\n- `description`: Full description (max 512 chars)\n- `email`: Business contact email\n- `websites`: List of website URLs (max 2)\n- `vertical`: Business category (UNDEFINED, OTHER, AUTO, BEAUTY, APPAREL,\n  EDU, ENTERTAIN, EVENT_PLAN, FINANCE, GROCERY, GOVT, HOTEL, HEALTH,\n  NONPROFIT, PROF_SERVICES, RETAIL, TRAVEL, RESTAURANT, NOT_A_BIZ)\n\n**Telegram Profile Fields:**\n- `name`: Bot display name (max 64 chars)\n- `description`: Full description shown on profile page (max 512 chars)\n- `short_description`: Short description shown in chat list (max 120 chars)\n- `commands`: List of bot commands, each with `command` and `description`\n\n**Returns:**\n- `success`: Boolean indicating if update succeeded\n- `message`: Success or error message\n- `updated_fields`: List of fields that were updated\n- `errors`: List of errors if some fields failed (partial success)","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"about\": \"string\",\n  \"address\": \"string\",\n  \"email\": \"string\",\n  \"websites\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"vertical\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"description\": \"string\",\n  \"name\": \"string\",\n  \"short_description\": \"string\",\n  \"commands\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0d673f2a-1b54-4320-9b47-d857061d8c8a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"about\": \"string\",\n  \"address\": \"string\",\n  \"email\": \"string\",\n  \"websites\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"vertical\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"description\": \"string\",\n  \"name\": \"string\",\n  \"short_description\": \"string\",\n  \"commands\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"message\": \"string\",\n  \"errors\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"15c25a75-c48a-4db9-9d43-7d47661a7389","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"about\": \"string\",\n  \"address\": \"string\",\n  \"email\": \"string\",\n  \"websites\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"vertical\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"description\": \"string\",\n  \"name\": \"string\",\n  \"short_description\": \"string\",\n  \"commands\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"da4efbe9-4607-4fd6-b89b-4acfaa0849c7","name":"Upload Channel Profile Photo","request":{"name":"Upload Channel Profile Photo","description":{"content":"Upload a profile photo for a WhatsApp channel.\n\nThis endpoint uploads a new profile picture directly to the WhatsApp\nBusiness Account via Meta's API.\n\n**Required Scopes:** `channels:update`\n\n**Supported Channels:** WhatsApp only (Telegram uses @BotFather for profile photos)\n\n**Image Requirements:**\n- Format: JPEG or PNG\n- Aspect ratio: Square (1:1) recommended\n- Size: 192x192 to 640x640 pixels\n- Maximum file size: 5MB\n\n**Request:**\n- Content-Type: multipart/form-data\n- Field name: `file`\n\n**Returns:**\n- `success`: Boolean indicating if upload succeeded\n- `message`: Success or error message\n- `profile_picture_url`: New profile picture URL if successful","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","profile","photo"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) "}]}},"response":[{"id":"31dfccaf-2910-4111-84a5-3b28e41b481b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","profile","photo"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"message\": \"string\",\n  \"profile_picture_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"708474ae-baed-4ee8-adf8-ff8095f95c9b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","profile","photo"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"40270735-aba7-4a06-8d33-e63d5296892c","name":"Get Whatsapp Username","request":{"name":"Get Whatsapp Username","description":{"content":"Get the WhatsApp business username claimed by this channel's phone number.\n\nA username lets customers reach the business through `wa.me/<username>`\nwithout knowing its phone number. It belongs to the PHONE NUMBER, so each\nWhatsApp channel has at most one.\n\n**Required Scopes:** `channels:read`\n\n**Response:**\n- `username`: the current handle, or `null` when none is claimed\n- `status`: `approved` (live) or `reserved` (accepted, still propagating)\n- `wa_me_url`: short link to share with customers\n- `suggestions`: available handles suggested by WhatsApp (best-effort — an\n  empty list simply means WhatsApp returned none)","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7dd5c8b6-c90f-4ba8-b2dc-c3fae5c50019","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"string\",\n  \"username\": \"string\",\n  \"status\": \"string\",\n  \"wa_me_url\": \"string\",\n  \"suggestions\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5270ed15-1899-4b0d-ac36-2f7251e8429e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bd9c9d8b-8ef4-40e6-902f-1b7f7adc60b6","name":"Set Whatsapp Username","request":{"name":"Set Whatsapp Username","description":{"content":"Claim or change the WhatsApp business username for this channel's number.\n\n**Required Scopes:** `channels:write`\n\n**Format:** 3-35 characters of lowercase letters, numbers, periods and\nunderscores; at least one letter; no leading/trailing period, no `..`, no\n`www` prefix, no domain-like suffix. Periods and underscores are distinct.\n\n**Transfers:** if the handle is already held by another phone number in the\nsame Meta business portfolio, WhatsApp answers with error `147005`. Repeat\nthe request with `force_transfer: true` to move it to this number.\n\n**Status:** `approved` means the username is live immediately; `reserved`\nmeans WhatsApp accepted it and will confirm through the\n`business_username_updates` webhook shortly.","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"username\": \"string\",\n  \"force_transfer\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"26e46479-9cf8-4fdd-a8f2-47f942544bef","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"username\": \"string\",\n  \"force_transfer\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"channel_id\": \"string\",\n  \"message\": \"string\",\n  \"username\": \"string\",\n  \"status\": \"string\",\n  \"wa_me_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3f80da2c-e4a8-41f3-ba71-61cfff8b3b14","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"username\": \"string\",\n  \"force_transfer\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d89a3599-6f23-4142-a391-61edc04a17fe","name":"Delete Whatsapp Username","request":{"name":"Delete Whatsapp Username","description":{"content":"Release the WhatsApp business username held by this channel's number.\n\n**Required Scopes:** `channels:write`\n\nWhatsApp does not return a released handle to the pool immediately, so\nsomeone else may not be able to claim it right away — and neither can you.\nTreat this as destructive.","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"c49839a3-33ff-42f6-a7a8-58948d711649","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"channel_id\": \"string\",\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8ace2671-59f5-42d4-a5a3-8407a13d46a2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp","username"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2aba11d8-4f45-4c12-b3a9-634946a16bce","name":"List Instagram Media","request":{"name":"List Instagram Media","description":{"content":"List media (posts, reels, carousels) for an Instagram channel.\n\nUsed by the ``comment_received`` flow-trigger config UI to let the user\npick specific posts to monitor for comments.\n\n**Required Scopes:** ``channels:read``\n\n**Pagination:**\n- Cursor-based via Meta's ``after`` parameter.\n- ``limit`` defaults to 25, max 50 (Meta enforces an upper bound around this).\n- Response includes ``pagination.next_cursor`` (null on the last page).\n\n**Errors:**\n- 404 — channel not found in this tenant.\n- 400 — channel exists but is not Instagram, or config is missing required fields.\n- 401 — Meta access token is expired / revoked (``error_code: \"token_expired\"``).\n- 429 — Meta rate limit exceeded.\n- 502 — Meta returned an unexpected error (full payload logged server-side, not exposed).","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","instagram","media"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"after","value":"string","description":"Meta Graph API pagination cursor (opaque)."},{"disabled":false,"key":"limit","value":"25","description":"Number of items per page (1-50)."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c8fba616-b93a-485e-a185-d02e36573ef0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","instagram","media"],"host":["{{baseUrl}}"],"query":[{"key":"after","value":"string"},{"key":"limit","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c35129ad-b571-4e96-b32e-6b34b1555923","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","instagram","media"],"host":["{{baseUrl}}"],"query":[{"key":"after","value":"string"},{"key":"limit","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"201aa261-b770-44d3-827d-38ebb5e3f020","name":"List Facebook Page Posts","request":{"name":"List Facebook Page Posts","description":{"content":"List published posts for a Facebook Page (Messenger) channel.\n\nUsed by the comment auto-reply rules UI and the ``comment_received``\nflow-trigger config to let the user pick specific posts to watch.\n\nReads ``/{page_id}/published_posts`` rather than ``/feed``: ``feed``\nalso returns posts made BY OTHERS on the Page and scheduled/unpublished\ndrafts, none of which a customer can meaningfully pick as \"a post of mine\nto auto-reply on\".\n\n**Required Scopes:** ``channels:read``\n\n**Pagination:**\n- Cursor-based via Meta's ``after`` parameter.\n- ``limit`` defaults to 25, max 50.\n- Response includes ``pagination.next_cursor`` (null on the last page).\n\n**Errors:**\n- 404 — channel not found in this tenant.\n- 400 — channel exists but is not a Messenger channel, or config is missing required fields.\n- 401 — Meta access token is expired / revoked (``error_code: \"token_expired\"``).\n- 429 — Meta rate limit exceeded.\n- 502 — Meta returned an unexpected error (full payload logged server-side, not exposed).","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","facebook","posts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"after","value":"string","description":"Meta Graph API pagination cursor (opaque)."},{"disabled":false,"key":"limit","value":"25","description":"Number of items per page (1-50)."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"193ebc03-54e9-45cf-9df8-0f815915f79a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","facebook","posts"],"host":["{{baseUrl}}"],"query":[{"key":"after","value":"string"},{"key":"limit","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cb66495c-2921-4ecf-9f65-a1807da4f8c2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","facebook","posts"],"host":["{{baseUrl}}"],"query":[{"key":"after","value":"string"},{"key":"limit","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"c89b0e38-47d5-45d2-bd16-cde7ab40dcdf","name":"Comment Rules","description":{"content":"Configure automated rules that reply to or act on incoming social comments.","type":"text/plain"},"item":[{"id":"72955531-8f68-4d19-962f-b96b4bcab9b2","name":"List Social Comment Rules","request":{"name":"List Social Comment Rules","description":{"content":"List comment auto-reply rules, in evaluation order.\n\nRules are returned in the order they are EVALUATED (priority ascending —\nlower runs first), so the list reads top-to-bottom exactly as it behaves.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","social-comment-rules"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"Filter by channel"},{"disabled":false,"key":"enabled","value":"true","description":"Filter by enabled state"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6478f9ad-0f61-4866-bf9e-baade563e45d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-comment-rules"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"enabled","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6c943c19-e5d1-48ff-9593-8865b5ffa5dd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-comment-rules"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"enabled","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f24a0c9a-277c-45aa-81cd-5fbda5ae341a","name":"Create Social Comment Rule","request":{"name":"Create Social Comment Rule","description":{"content":"Create a comment auto-reply rule.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","social-comment-rules"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"channel_id\": \"string\",\n  \"enabled\": true,\n  \"priority\": 0,\n  \"post_scope\": \"all_posts\",\n  \"post_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"match_mode\": \"any_comment\",\n  \"keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"action\": \"send_private_reply\",\n  \"reply_text\": \"string\",\n  \"flow_id\": \"string\",\n  \"post_message_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f51d1051-6796-4e34-abad-f0baa182f910","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-comment-rules"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"channel_id\": \"string\",\n  \"enabled\": true,\n  \"priority\": 0,\n  \"post_scope\": \"all_posts\",\n  \"post_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"match_mode\": \"any_comment\",\n  \"keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"action\": \"send_private_reply\",\n  \"reply_text\": \"string\",\n  \"flow_id\": \"string\",\n  \"post_message_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ce59ed0f-c959-49c2-8532-6e97b8055e39","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-comment-rules"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"channel_id\": \"string\",\n  \"enabled\": true,\n  \"priority\": 0,\n  \"post_scope\": \"all_posts\",\n  \"post_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"match_mode\": \"any_comment\",\n  \"keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"action\": \"send_private_reply\",\n  \"reply_text\": \"string\",\n  \"flow_id\": \"string\",\n  \"post_message_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9f7fd016-bea2-4420-8687-57c46919f9b4","name":"Get Social Comment Rule","request":{"name":"Get Social Comment Rule","description":{"content":"Get one comment auto-reply rule.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"dc6155dd-9561-4378-8b45-7492d38c33b0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1d929523-2224-4bad-af57-3c01e09fbf34","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4cc3a21c-c7a6-4ec4-8200-f3e27bcabf0f","name":"Update Social Comment Rule","request":{"name":"Update Social Comment Rule","description":{"content":"Update a comment auto-reply rule.\n\nPartial: omitted fields are left untouched. ``channel_id`` cannot be\nchanged — moving a rule to another channel silently changes which posts it\ncan match, so that is a delete plus a create.\n\nThe MERGED rule is re-validated, not just the submitted fields: switching\n``action`` to ``start_flow`` without also sending a ``flow_id`` has to fail\neven though each field on its own looks fine.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"enabled\": true,\n  \"priority\": 409,\n  \"post_scope\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"post_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"match_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"action\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"reply_text\": \"string\",\n  \"flow_id\": \"string\",\n  \"post_message_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d156bf1a-43d5-4fa3-b288-cbaae01f2719","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"enabled\": false,\n  \"priority\": 336,\n  \"post_scope\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"post_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"match_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"action\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"reply_text\": \"string\",\n  \"flow_id\": \"string\",\n  \"post_message_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"01573cd3-295d-4903-9305-5851a8489799","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"enabled\": false,\n  \"priority\": 336,\n  \"post_scope\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"post_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"match_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"keywords\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"action\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"reply_text\": \"string\",\n  \"flow_id\": \"string\",\n  \"post_message_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"33b21752-a742-49f7-8075-f80f8b9cac60","name":"Delete Social Comment Rule","request":{"name":"Delete Social Comment Rule","description":{"content":"Delete a comment auto-reply rule.\n\nA hard delete. Rules carry no history worth archiving — the comments they\nacted on keep their own ``auto_replied`` state and their reply messages\nindependently of the rule that produced them.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e4c42808-1652-4fc0-9bc2-950c4b9e0b82","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"070bac31-eda5-4334-8f57-eed11e75636e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-comment-rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"a14a2323-d165-40b9-b3ee-d48d03ad9b53","name":"Comments","description":{"content":"Manage inbound social comments (Facebook, Instagram) and send public or private replies.","type":"text/plain"},"item":[{"id":"4d0af4d9-ffa0-49ce-b28f-eeae5841bc3d","name":"Subscribe Facebook Messenger Page(s) to the comment webhook","request":{"name":"Subscribe Facebook Messenger Page(s) to the comment webhook","description":{"content":"Fix a **Facebook Messenger** Page that the capability probe reported as\n`resubscribe_required` — i.e. the connection is otherwise fine, the Page is just\nnot subscribed to the `feed` webhook field that delivers post comments.\n\nUnlike Instagram (which needs a real permission the customer can only add by\nreconnecting), no permission is missing here: the stored Page token already\ncarries everything Facebook private replies need. So instead of sending the\ncustomer to reconnect, we do it for them — this POSTs the Page's\n`subscribed_apps` with the complete Messenger field list **plus `feed`** (a full\nreplace, never a merge; a Page that also backs a legacy page-backed Instagram\nchannel keeps `comments` on the union).\n\nPass `channel_id` to fix one Messenger channel, or omit it to resubscribe every\nnon-archived Messenger channel in the workspace. Tenant-scoped and idempotent.\nAfter it returns, re-read `GET /channels/comment-capabilities` for the fresh\nverdict.\n\n**Required Scopes:** `channels:update`","type":"text/plain"},"url":{"path":["api","v1","comments","messenger","resubscribe"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"Restrict to one Facebook Messenger channel. Omit to resubscribe every non-archived Messenger channel in the workspace."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"01014d38-1d2a-4db1-9d0c-6e9467515813","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","messenger","resubscribe"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"results\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8f9c1a00-5ddc-420d-9be1-49a61ce3f4e5","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","messenger","resubscribe"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"c249af58-9631-44da-8998-74e2df5cf03e","name":"A `channel_id` was given but no matching non-archived Facebook Messenger channel exists in this workspace (`error_code`: `channel_not_found`). Instagram channels are never valid here — they need a customer reconnect, not a resubscribe.","originalRequest":{"url":{"path":["api","v1","comments","messenger","resubscribe"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"cfda7428-b7b5-4450-ad75-b4f64b628483","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments","messenger","resubscribe"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e285ae32-434d-46c7-8af5-2874c4da4d3d","name":"Send a private reply to a comment","request":{"name":"Send a private reply to a comment","description":{"content":"Send a **private reply**: a direct message to the person who left a public\ncomment on your Instagram post or Facebook Page post.\n\nPass Meta's own comment id in the path — the value your `comment.received`\nwebhook delivers. The comment does not have to be stored in your workspace; if\nit is not, supply `channel_id` in the body.\n\n### What a private reply may contain\n\nThe two platforms differ, and this endpoint enforces the difference rather\nthan letting a field be silently dropped:\n\n| Content | Instagram | Facebook Messenger |\n|---|---|---|\n| `text` | yes | yes |\n| `buttons` | yes (up to 3, `url` or `postback`) | yes (up to 3, `url` or `postback`) |\n| `quick_replies` | yes (up to 13) | yes (up to 13) |\n| `image_url` | **no** — 400 | yes |\n\nButtons and quick replies are supported on **both** platforms — verified on\nlive accounts: they render for the recipient and taps arrive back as inbound\nmessages.\n\nImages on Instagram are not accepted at all. On either platform, content the\nprivate reply cannot carry belongs in a **follow-up** message: once the\nrecipient answers, the standard 24-hour messaging window opens and the normal\nsend API accepts buttons and media.\n\n### Buttons\n\nEach button is one of two kinds:\n\n* **URL button** — `{\"type\": \"url\", \"title\": \"Shop now\", \"url\": \"https://…\"}`.\n  Opens the link. Absolute **https** only. Nothing comes back to you.\n* **Postback button** — `{\"type\": \"postback\", \"title\": \"Get the code\", …}`.\n  Sends a value back to you when tapped, arriving as `meta.button_id` on the\n  resulting inbound message. Either:\n  * `\"action\": \"start_flow\", \"flow_id\": \"…\"` — the tap **starts that flow** for\n    the person who tapped, or\n  * `\"payload\": \"your-own-value\"` — an opaque value you match yourself.\n\nA `start_flow` button may target any published flow **except** one whose\ntrigger is \"Comment received\": that trigger is reserved for the first message,\nand this comment's single allowed private reply was already spent on the\nmessage carrying the button.\n\n### Rules Meta enforces\n\n* **One private reply per comment, ever.** A second attempt returns `409`.\n* **7-day window** from when the comment was created. After that, `410`.\n* **Not available on ad comments** (Facebook). This is invisible until you\n  send, so it surfaces as `422`.\n\n### Billing\n\nA private reply is a real Instagram/Messenger direct message and is billed\nexactly like any other outbound message on that channel.\n\n**🔐 Required Scopes:** `messages:create`\n","type":"text/plain"},"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"30bcc50d-0306-4e4a-b833-8aefe56107bd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"comment_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"platform\": \"string\",\n  \"status\": \"sent\",\n  \"message_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"external_id\": \"string\",\n  \"recipient_id\": \"string\",\n  \"social_comment_id\": \"string\",\n  \"state\": \"string\",\n  \"sent_at\": \"1983-05-14T13:04:01.692Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"44ea584c-adbc-4079-84cf-c16eaccf8f34","name":"The request is not valid for this platform — most commonly an image on an **Instagram** channel, which Meta does not document for private replies. `error_code` is `unsupported_content` or `channel_required`.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"6ce076db-1627-487b-b339-e8c9c8a1c6b1","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"a72b19b2-468a-400f-bbe4-c89593cc0272","name":"The channel does not exist, is inactive, or is not an Instagram / Facebook Messenger channel (`error_code`: `channel_not_found`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"bab42f39-9bda-441c-926c-70856ae76784","name":"A private reply has **already** been sent for this comment. Meta allows exactly one per comment, forever — this is permanent, not retryable (`error_code`: `private_reply_already_sent`). Also returned when the commenter is a blocked contact (`detail.error`: `CONTACT_BLOCKED`); unblock the contact to reply privately.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"7a7ce5e9-41ff-4598-bd88-39250754e321","name":"The **7-day** private-reply window measured from the comment's creation has closed. Permanent (`error_code`: `private_reply_window_expired`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Gone","code":410,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"72011419-f5ac-4ce9-a862-2f87e85a2385","name":"Two distinct causes, told apart by `error_code`:\n\n* `private_reply_not_eligible` — Meta refuses a private reply to this particular comment: it is on an **ad** (Facebook only), the comment or its post was deleted, or the author is another Page. Nothing in Meta's webhooks flags an ad comment, so this can only be discovered at send time.\n* `invalid_buttons` — one or more buttons are unusable. The body carries `errors`: a list of `{index, field, reason}` naming the offending button by position. Reasons include `must_be_absolute_https_url`, `too_long`, `unknown_flow` and `flow_trigger_not_startable_from_button`.\n\nBoth carry an `error_code`, which also distinguishes them from FastAPI's schema-validation 422.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"4c09e74b-b1f9-4b90-8684-e49148b0b0ae","name":"Meta rejected or failed the send for another reason (`error_code`: `send_failed`). Safe to retry.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","private-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"37df4864-f4f3-4646-808b-d50f6f12d0f4","name":"Post a public reply under a comment","request":{"name":"Post a public reply under a comment","description":{"content":"Post a **public reply** visible under a comment on your Instagram post or\nFacebook Page post — the ordinary \"reply to this comment\" action.\n\nPass Meta's own comment id in the path. If the comment is not stored in your\nworkspace, supply `channel_id` in the body.\n\nUnlike a **private reply**, a public reply is comment-layer only: it does not\ncreate a conversation, a contact or a `messages` row, and it is **not billed**\nlike a direct message. It also does not consume the one-per-comment private-reply\nallowance — you can reply publicly and still send a private DM afterwards. There\nis no time window and no duplicate suppression (Meta permits several public\nreplies to one comment).\n\nText only in v1 — no buttons, quick replies or media.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"aad74a15-c0e0-44e1-894d-a41c0217d03c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"comment_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"platform\": \"string\",\n  \"status\": \"sent\",\n  \"public_reply_id\": \"string\",\n  \"social_comment_id\": \"string\",\n  \"public_reply_text\": \"string\",\n  \"public_replied_at\": \"1966-12-30T04:56:14.517Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4c7aff82-1763-4b0e-9d3d-9505851be11f","name":"`channel_id` is required because the comment is not stored in this workspace (`error_code`: `channel_required`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"c64d24e8-d375-49fb-a599-d361d41d18dc","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"abedf52c-c6ac-4b99-8c9d-322dc526252e","name":"The channel does not exist, is inactive, or is not an Instagram / Facebook Messenger channel (`error_code`: `channel_not_found`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"58da80c0-76fb-44e8-913f-c8d382c3919c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9f52db6c-fd2e-4dba-876b-3492d6a44422","name":"Meta rejected or failed the reply (`error_code`: `send_failed`). Safe to retry — public replies have no one-per-comment limit.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","public-reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"channel_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d203cfa8-cba6-438a-acb3-c073bfa02ee4","name":"Post a public reply and/or send a private DM in one call","request":{"name":"Post a public reply and/or send a private DM in one call","description":{"content":"Post a public reply **and/or** send a private DM to a comment in one call.\nSupply `public_text`, `private_text`, or both (at least one is required).\n\nThe private-DM fields (`buttons`, `quick_replies`, `image_url`) behave exactly\nas on `POST /{comment_id}/private-reply` and apply only to the DM.\n\n### Order and partial-failure contract\n\nThe public reply is posted **first**, then the private DM:\n\n* **Public reply fails** → `502`, and the private DM is *not* attempted\n  (nothing was sent).\n* **Public reply succeeds, private DM fails** → `200` with\n  `status: \"partial\"`: the public reply is already live and is returned in\n  `public`, while `private` is `null` and `private_error` /\n  `private_error_type` describe the DM failure. The public reply is never\n  rolled back.\n* **Private-only request (no `public_text`)** → the private-reply errors map to\n  their usual HTTP statuses (`409` already-sent, `410` window, `422`\n  not-eligible / invalid buttons, …), exactly like the standalone endpoint.\n* **Everything sent** → `200` with `status: \"sent\"`.\n\nBilling: the private DM is billed like any outbound message; the public reply is\nnot billed.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3a10f844-4b24-4d1a-a948-552140fa64bd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"status\": \"string\",\n  \"public\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"private\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"private_error\": \"string\",\n  \"private_error_type\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b1e4aefa-355a-4521-af99-902abd8f684a","name":"`error_code` `channel_required` (comment not stored, no `channel_id`) or `unsupported_content` (e.g. an image on Instagram).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e1b25c43-1c5e-48ea-b329-7346129666b6","name":"The `social_comments_beta` feature is not enabled (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"a35c27a4-5d9d-4ee4-94e3-1e6bdb2695a7","name":"Channel not found (`error_code`: `channel_not_found`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e7419ea9-6596-43a3-8ce1-716a4408a08c","name":"A private reply was already sent for this comment (`error_code`: `private_reply_already_sent`). Only raised for a **private-only** request — see the partial contract below.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"8c0550cd-e491-447b-9833-7ce5ae79fc7d","name":"The 7-day private-reply window has closed (`error_code`: `private_reply_window_expired`). Private-only request only.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Gone","code":410,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"0b51766c-0b18-4fb4-9a19-7b64e28abdeb","name":"`private_reply_not_eligible`, `invalid_buttons` or `invalid_quick_replies` on the private DM. Private-only request only, plus FastAPI schema-validation 422.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"07852fce-d269-4de9-add6-af98a986e535","name":"The **public** reply failed (`error_code`: `send_failed`); nothing was sent, safe to retry.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`) — exactly as delivered by the webhook."}]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"public_text\": \"string\",\n  \"private_text\": \"string\",\n  \"channel_id\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"quick_replies\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"image_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2ed66dd2-1ba4-4ca7-8da2-c1530cd87657","name":"List posts that have comments","request":{"name":"List posts that have comments","description":{"content":"The left-hand column of the Comments view: your Instagram media and Facebook\nPage posts, newest published first, each with its comment count and — the number\nthat matters — how many of those comments are still **unanswered**.\n\nBoth counts are read from the post row itself rather than counted per request.\nThey are maintained as comments arrive and recomputed whenever a comment is\ntriaged or aged out, which is what keeps this list cheap on a post that went\nviral.\n\nPass `channel_id`: the Comments view is channel-scoped, and it is also the\nindexed path. Use `has_unanswered=true` for a \"needs attention\" list.\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","comments","posts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"Only posts on this Instagram / Facebook Messenger channel. Omit for every channel in the workspace."},{"disabled":false,"key":"has_unanswered","value":"true","description":"`true` → only posts with at least one unanswered comment; `false` → only fully cleared posts; omit for all."},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"23d6b5f9-faff-49c1-a151-7dfa599b53f8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","posts"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"has_unanswered","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f3ae30bc-c03f-4fd5-9394-0561edaa3e20","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","posts"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"has_unanswered","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"85ffe8c4-cd87-46a7-acbe-19ea4f1d29bd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments","posts"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"has_unanswered","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"69e17d78-d22b-461d-b947-b506bae46ff2","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments","posts"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"has_unanswered","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"78d84d45-51bc-4861-96e7-50494c66eb1c","name":"Pull recent posts from Meta into the Posts list","request":{"name":"Pull recent posts from Meta into the Posts list","description":{"content":"Fetch the newest posts straight off the connected Instagram account / Facebook\nPage and upsert them into the Posts list — **including posts that have no\ncomments yet**, which is what ordinary comment ingestion never surfaces.\n\nPass `channel_id` to sync one channel, or omit it to sync every connected social\nchannel in the workspace. `limit` (default 25) is how many recent posts to pull\nper channel.\n\nReturns `{ \"synced\": N, \"created\": M }`: `synced` is how many posts were read\nand upserted, `created` is how many of those were new. A channel Meta\nrate-limits or rejects is skipped rather than failing the whole call, so a large\nworkspace still syncs the channels that are reachable.\n\nThe like/comment counts and captions on existing posts are refreshed by the same\npass.\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","comments","posts","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"limit\": 25\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"51475f21-89aa-41ad-8ef5-b6c721a48e36","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","posts","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"limit\": 25\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"synced\": 0,\n  \"created\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6c87f4e8-d38e-43b6-886c-000d049629a4","name":"The given `channel_id` is not an Instagram / Facebook Messenger channel (`error_code`: `not_a_social_channel`).","originalRequest":{"url":{"path":["api","v1","comments","posts","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"limit\": 25\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"3b9bc0af-96d9-492a-8c8a-2886b3e993d1","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","posts","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"limit\": 25\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"0967ce23-ea8f-43d3-8ffc-040ffb07c84f","name":"A `channel_id` was given but no such channel exists in this workspace (`error_code`: `channel_not_found`).","originalRequest":{"url":{"path":["api","v1","comments","posts","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"limit\": 25\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"47f87079-763a-48e5-b438-5a509bec1bf7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments","posts","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"limit\": 25\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d87a839d-3095-45ba-8613-f8c90d84f307","name":"Aggregate insights totals across the workspace's posts","request":{"name":"Aggregate insights totals across the workspace's posts","description":{"content":"Totals of the cached per-post insights across all of this workspace's\ncomment-synced posts, for two windows: the **last 30 days** (posts published in\nthat window) and **all time**.\n\nBecause per-post insights are Meta **lifetime** totals, the 30-day window\nselects WHICH posts are summed (by `posted_at`), it is NOT a per-day series — the\nnumbers are still lifetime totals for the posts in scope. Each metric sums only\nthe non-null cached values, so a metric a platform never exposes never distorts\nthe total; `post_count` is how many posts had cached insights and contributed.\n\nServed entirely from the cache — no live Graph call. Use the refresh endpoints to\nupdate the underlying numbers first.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","comments","posts","insights","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ee878c94-42db-4c39-bf24-a54699f2ba4a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"last_30_days\": {\n    \"reach\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"impressions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"engagement\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"likes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"comments\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"shares\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"saves\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"video_views\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"clicks\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"post_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"all_time\": {\n    \"reach\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"impressions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"engagement\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"likes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"comments\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"shares\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"saves\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"video_views\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"clicks\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"post_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"last_refreshed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b885efda-3eb3-48f3-8869-abcf116c5990","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"018f9da5-7f07-4e6e-a860-b12cc39457e3","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"37ac8c84-ef7f-4c33-817b-a8954a06565b","name":"Force-refresh cached insights for the workspace's recent posts","request":{"name":"Force-refresh cached insights for the workspace's recent posts","description":{"content":"Force a LIVE Meta re-fetch for the workspace's most recent posts, overwrite the\nper-post cache columns, and return each refreshed post with its updated insights.\n\nBounded by `limit` (default 25, max 50, most-recent-first) so a large workspace\nnever triggers a Graph storm — call it per channel with `channel_id` to refresh a\nspecific account. A post whose page lacks insights access is refreshed to\n`authorized: false` + `insights_not_authorized` (persisted, never a 500); a\nnon-IG/FB post to `insights_unsupported_platform`.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","comments","posts","insights","refresh"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"Only refresh posts on this Instagram / Facebook channel. Omit to refresh the most recent posts across the workspace."},{"disabled":false,"key":"limit","value":"25","description":"How many most-recent posts to refresh."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a80b60d3-b90b-4ea7-9d35-344966eff7bc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","refresh"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"limit","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"refreshed\": 8682,\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9d975609-0d34-4567-8b56-0cfa24b49cbc","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","refresh"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"limit","value":"25"}],"variable":[]},"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"53da3a25-5cc0-425a-9472-490cea397412","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","refresh"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"limit","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4b9d20d8-75c6-4c4a-9ce2-e1a013884df8","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments","posts","insights","refresh"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"limit","value":"25"}],"variable":[]},"method":"POST","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ef3616c3-0b56-46cb-9a43-d4caefb3a63c","name":"Force-refresh cached insights for one post","request":{"name":"Force-refresh cached insights for one post","description":{"content":"Force a LIVE Meta re-fetch for one comment-synced post, overwrite its cache\ncolumns (and `insights_refreshed_at`), and return the updated insights.\n\nDegrades softly and persists the degraded state: a page lacking insights access →\n`authorized: false` + `insights_not_authorized`; an object Meta carries no\ninsights for → `insights_unavailable`; a non-IG/FB channel →\n`insights_unsupported_platform`. Never a 500 for a Meta-side condition.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","comments","posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our post id (from `GET /comments/posts`)."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a061188d-aa2d-416f-bbaf-1f90b8340dc1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our post id (from `GET /comments/posts`)."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"post_id\": \"string\",\n  \"insights\": {\n    \"reach\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"impressions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"engagement\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"likes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"comments\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"shares\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"saves\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"video_views\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"clicks\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"authorized\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"error_code\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_refreshed_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6b581ec3-8f91-4441-b0b1-f47e782f372f","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our post id (from `GET /comments/posts`)."}]},"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"3838ee01-d13f-4168-b5a9-eacf75bdd75f","name":"No such post in this workspace (`post_not_found`).","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our post id (from `GET /comments/posts`)."}]},"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e6ca2d88-c29a-4d5d-8401-5030d4d33cc0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our post id (from `GET /comments/posts`)."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7b7ef627-9504-44d8-95ed-290874e07904","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our post id (from `GET /comments/posts`)."}]},"method":"POST","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ac6f6510-d56d-438b-bf7f-c3eea9aee05d","name":"List the comments on one post","request":{"name":"List the comments on one post","description":{"content":"The comment thread for one post, oldest first so it reads chronologically.\n\n`post_id` is **our** id, as returned by `GET /comments/posts` — not Meta's post\nid.\n\nEvery row carries what it takes to render it and to decide what you may do with\nit: the text, the author, the state, whether it is a threaded reply and to which\ncomment, when Meta's 7-day private-reply window closes, and whether a private\nreply is still possible **with the reason when it is not**. Most comments end up\nunavailable, and that is normal rather than an error — see\n`private_reply_unavailable_reason`.\n\nFilter with `state`, which is repeatable: `?state=unanswered`,\n`?state=replied&state=auto_replied`. Omit it for the \"All\" tab.\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","comments","posts",":post_id","comments"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"state","value":"string","description":"Repeatable state filter: `unanswered` (alias of `pending`), `pending`, `auto_replied`, `replied`, `handled`, `ignored`. Omit for all states."},{"disabled":false,"key":"state","value":"string","description":"Repeatable state filter: `unanswered` (alias of `pending`), `pending`, `auto_replied`, `replied`, `handled`, `ignored`. Omit for all states."},{"disabled":false,"key":"include_owner","value":"false","description":"Include comments made by the connected account itself. Off by default: Meta echoes our own public replies back as ordinary comments, and they are noise in a work queue."},{"disabled":false,"key":"include_reply","value":"true","description":"Hydrate each answered comment's private-reply message into `private_reply`. One extra query per page; turn it off for bulk exports."},{"disabled":false,"key":"sort_order","value":"asc","description":"Order by `commented_at`. Defaults to `asc` — a thread reads forwards."},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our social post id (not Meta's)."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a80b4590-4b23-427f-adcd-60700140adae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","comments"],"host":["{{baseUrl}}"],"query":[{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"sort_order","value":"asc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our social post id (not Meta's)."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"35994ec5-ba4e-4536-9843-dbea3e8a1c6b","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","comments"],"host":["{{baseUrl}}"],"query":[{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"sort_order","value":"asc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our social post id (not Meta's)."}]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"3fd8ee63-a746-4bb0-93b7-a6f4daafc5ad","name":"No such post in this workspace (`error_code`: `post_not_found`).","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","comments"],"host":["{{baseUrl}}"],"query":[{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"sort_order","value":"asc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our social post id (not Meta's)."}]},"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"4b6a43ba-cc6d-492e-a9c8-a0ea7a3f065b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","comments"],"host":["{{baseUrl}}"],"query":[{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"sort_order","value":"asc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our social post id (not Meta's)."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"32cdbc25-039e-480b-8716-ec0c7e8e0b23","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments","posts",":post_id","comments"],"host":["{{baseUrl}}"],"query":[{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"sort_order","value":"asc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) Our social post id (not Meta's)."}]},"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f6aa3106-652d-4f3b-b2e1-2683a192e01f","name":"Comment inbox — comments across all posts","request":{"name":"Comment inbox — comments across all posts","description":{"content":"Every comment in the workspace, newest first, filtered by state — the screen an\nagent actually works from. It exists so nobody has to guess which post has\nsomething waiting on it: `GET /comments?state=unanswered` is the whole queue.\n\nDefaults to `state=unanswered`, because that is the question this view answers.\nPass `state` explicitly (repeatable) for anything else, or `state=pending&\nstate=auto_replied&state=replied&state=handled&state=ignored` for everything.\n\nEach row embeds a compact `post` reference — permalink, caption, thumbnail — so\na comment is legible without knowing which post it came from, and links back to\nthe post on Instagram / Facebook.\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","comments"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"Only comments on this channel's posts."},{"disabled":false,"key":"state","value":"string","description":"Repeatable state filter: `unanswered` (alias of `pending`), `pending`, `auto_replied`, `replied`, `handled`, `ignored`. **Defaults to `unanswered`.**"},{"disabled":false,"key":"state","value":"string","description":"Repeatable state filter: `unanswered` (alias of `pending`), `pending`, `auto_replied`, `replied`, `handled`, `ignored`. **Defaults to `unanswered`.**"},{"disabled":false,"key":"include_owner","value":"false","description":"Include the connected account's own comments (our public replies)."},{"disabled":false,"key":"include_reply","value":"true","description":"Hydrate `private_reply` for answered comments."},{"disabled":false,"key":"include_post","value":"true","description":"Embed each comment's `post` reference. One extra query per page; turn it off if you only need the comments themselves."},{"disabled":false,"key":"sort_order","value":"desc","description":"Order by `commented_at`. Defaults to `desc` (newest first); pass `asc` to work the queue oldest-first."},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"54aa12b9-95a2-48c7-ba2e-3993b3b9c836","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"include_post","value":"true"},{"key":"sort_order","value":"desc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"853ef4a0-364d-4fe3-8f77-c2c5fc8031c0","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"include_post","value":"true"},{"key":"sort_order","value":"desc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"8cf08a13-6a74-46cb-a350-182bfbab609b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"include_post","value":"true"},{"key":"sort_order","value":"desc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8613bb1f-e18e-412d-a18e-3137503fee6c","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"state","value":"string"},{"key":"state","value":"string"},{"key":"include_owner","value":"false"},{"key":"include_reply","value":"true"},{"key":"include_post","value":"true"},{"key":"sort_order","value":"desc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7e3dc400-bd69-4427-a61b-4b75b56ae9d6","name":"Get one comment","request":{"name":"Get one comment","description":{"content":"One comment, with its post and its private reply resolved.\n\n`comment_id` is **Meta's** comment id — the same value\n`POST /comments/{comment_id}/private-reply` takes, the same value the\n`comment.received` webhook delivers, and the same value that appears on the\noutbound reply message as `meta.comment_id`. Our own comment id is accepted too.\n\nThat is what makes this endpoint the **message → comment** direction of the\nreply linkage: a conversation showing a private reply holds only\n`meta.comment_id`, and this turns it into the comment text, author, state and\npost permalink needed to render \"↩ replying to …\".\n\n**🔐 Required Scopes:** `messages:read`\n","type":"text/plain"},"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_reply","value":"true","description":"Hydrate the private-reply message into `private_reply`."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`), or our own comment id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"47ac59f9-10ea-4002-beaf-8b642cfd792c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[{"key":"include_reply","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`), or our own comment id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"social_post_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"external_comment_id\": \"string\",\n  \"author_external_id\": \"string\",\n  \"state\": \"string\",\n  \"commented_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"parent_external_comment_id\": \"string\",\n  \"is_reply\": false,\n  \"author_username\": \"string\",\n  \"is_from_owner\": false,\n  \"contact_id\": \"string\",\n  \"text\": \"string\",\n  \"attachment_url\": \"string\",\n  \"attachment_type\": \"string\",\n  \"replied_at\": \"string\",\n  \"replied_by_user_id\": \"string\",\n  \"handled_at\": \"string\",\n  \"private_reply_window_expires_at\": \"string\",\n  \"private_reply_available\": false,\n  \"private_reply_unavailable_reason\": \"string\",\n  \"private_reply_message_id\": \"string\",\n  \"private_reply\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"public_reply_id\": \"string\",\n  \"post\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"477ca807-dca8-4bce-8e9f-bec88720d321","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[{"key":"include_reply","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`), or our own comment id."}]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"22665782-01f9-4202-acb1-6ee7bffeda21","name":"No such comment in this workspace (`error_code`: `comment_not_found`). A comment we never stored — one that predates the feature, or that retention has aged out — is indistinguishable from one that never existed.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[{"key":"include_reply","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`), or our own comment id."}]},"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"81bbb4fb-dcf3-4874-8d32-56261acd4fba","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[{"key":"include_reply","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`), or our own comment id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1cedc9aa-6891-4ac7-945e-ff754ef94abf","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[{"key":"include_reply","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id (Instagram: numeric; Facebook: `{post_id}_{comment_id}`), or our own comment id."}]},"method":"GET","body":{}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"58397564-dfc7-4586-bb3f-9d929d07b1eb","name":"Mark a comment handled or ignored (or reopen it)","request":{"name":"Mark a comment handled or ignored (or reopen it)","description":{"content":"Clear a comment from the unanswered queue **without** sending a private reply —\nfor the comment you answered publicly, answered on the phone, or simply decided\nto skip. This is what stops the unanswered badge from being a number nobody can\never drive to zero.\n\n* `handled` — dealt with, no private reply sent.\n* `ignored` — not actionable.\n* `pending` — reopen; undoes either of the above.\n\nThe post's comment counters are **recomputed** from the comment rows as part of\nthe same transaction, not nudged up or down, so repeating this call — a\ndouble-click, a retried request, flipping a comment back and forth — can never\nmake the badge drift.\n\n`replied` and `auto_replied` are not settable here: they assert that a private\nreply message exists, and only sending one may assert that.\n\n**🔐 Required Scopes:** `conversations:update, messages:create`\n","type":"text/plain"},"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7fc20a61-db60-416b-922b-da12a7b2b78f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"social_post_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"external_comment_id\": \"string\",\n  \"author_external_id\": \"string\",\n  \"state\": \"string\",\n  \"commented_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"parent_external_comment_id\": \"string\",\n  \"is_reply\": false,\n  \"author_username\": \"string\",\n  \"is_from_owner\": false,\n  \"contact_id\": \"string\",\n  \"text\": \"string\",\n  \"attachment_url\": \"string\",\n  \"attachment_type\": \"string\",\n  \"replied_at\": \"string\",\n  \"replied_by_user_id\": \"string\",\n  \"handled_at\": \"string\",\n  \"private_reply_window_expires_at\": \"string\",\n  \"private_reply_available\": false,\n  \"private_reply_unavailable_reason\": \"string\",\n  \"private_reply_message_id\": \"string\",\n  \"private_reply\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"public_reply_id\": \"string\",\n  \"post\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b1746fba-5ed4-48c0-b82e-be5d85996eb3","name":"The `social_comments_beta` feature is not enabled for this workspace (`error_code`: `feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"59b71f2e-29e5-4912-8918-a723dff1360d","name":"No such comment in this workspace (`error_code`: `comment_not_found`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"0814a3c5-e5fa-4e11-9281-603a0d0fb6b5","name":"The comment already has a private reply, so its state is no longer yours to set — Meta permits exactly one private reply per comment, forever, and calling such a comment unanswered would advertise an action that can never succeed (`error_code`: `state_not_allowed`).","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"7c09617e-2dde-42d6-89bb-f3d5ccfd2012","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"62df01c6-325a-4cf9-a15f-ce054ac180e4","name":"Comment storage is not available for this workspace yet (`error_code`: `social_comments_unavailable`). Transient — this is what a shard that has not received the comment tables answers, rather than a 500.","originalRequest":{"url":{"path":["api","v1","comments",":comment_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"comment_id","description":"(Required) Meta's comment id, or our own comment id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"state\": \"handled\"\n}","options":{"raw":{"language":"json"}}}},"status":"Service Unavailable","code":503,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"e9034c4b-e51e-4b6c-aa89-b3b2358140e1","name":"Company Profile","description":{"content":"Manage your organization's profile information displayed to customers across channels.","type":"text/plain"},"item":[{"id":"7d38a349-903a-4285-b989-b22de6ede43c","name":"Get Company Profile","request":{"name":"Get Company Profile","description":{"content":"Get tenant company profile and branding information\n\nReturns combined data:\n- Legal company information (for email compliance)\n- Branding settings (colors, logo)\n- Computed field: is_complete_for_email\n\n**Database:** PRIMARY (tenants table)\n\n**🔐 Required Scopes:** `settings:read`\n","type":"text/plain"},"url":{"path":["api","v1","company-profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a70af48f-c500-4113-8015-fa1ab0765d9c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","company-profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"company_legal_name\": \"string\",\n  \"company_address_line1\": \"string\",\n  \"company_address_line2\": \"string\",\n  \"company_city\": \"string\",\n  \"company_state_province\": \"string\",\n  \"company_postal_code\": \"string\",\n  \"company_country\": \"string\",\n  \"company_email\": \"string\",\n  \"company_phone\": \"string\",\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"brand_colors\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"logo_variants\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_complete_for_email\": false\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ca09b10a-cc66-4cf7-a695-6cf3ed2afe89","name":"Update Company Profile","request":{"name":"Update Company Profile","description":{"content":"Update tenant company profile and branding (partial update)\n\nOnly updates provided fields. Unspecified fields remain unchanged.\n\n**Database:** PRIMARY (tenants table)\n\n**Example:**\n```json\n{\n    \"company_legal_name\": \"ACME Corporation\",\n    \"company_address_line1\": \"123 Main St\",\n    \"company_city\": \"San Francisco\",\n    \"company_state_province\": \"CA\",\n    \"company_postal_code\": \"94102\",\n    \"company_country\": \"United States\",\n    \"brand_colors\": {\n        \"primary\": \"#007bff\",\n        \"secondary\": \"#6c757d\",\n        \"accent\": \"#28a745\"\n    }\n}\n```\n\n**🔐 Required Scopes:** `settings:update`\n","type":"text/plain"},"url":{"path":["api","v1","company-profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"company_legal_name\": \"string\",\n  \"company_address_line1\": \"string\",\n  \"company_address_line2\": \"string\",\n  \"company_city\": \"string\",\n  \"company_state_province\": \"string\",\n  \"company_postal_code\": \"string\",\n  \"company_country\": \"string\",\n  \"company_email\": \"string\",\n  \"company_phone\": \"string\",\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"brand_colors\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"ae73721a-f48c-435d-8b34-2e88ca14d117","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","company-profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"company_legal_name\": \"string\",\n  \"company_address_line1\": \"string\",\n  \"company_address_line2\": \"string\",\n  \"company_city\": \"string\",\n  \"company_state_province\": \"string\",\n  \"company_postal_code\": \"string\",\n  \"company_country\": \"string\",\n  \"company_email\": \"string\",\n  \"company_phone\": \"string\",\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"brand_colors\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"company_legal_name\": \"string\",\n  \"company_address_line1\": \"string\",\n  \"company_address_line2\": \"string\",\n  \"company_city\": \"string\",\n  \"company_state_province\": \"string\",\n  \"company_postal_code\": \"string\",\n  \"company_country\": \"string\",\n  \"company_email\": \"string\",\n  \"company_phone\": \"string\",\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"brand_colors\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"logo_variants\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_complete_for_email\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"58d5f2d9-bf58-41d4-87a5-2bc13c69dfaa","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","company-profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"company_legal_name\": \"string\",\n  \"company_address_line1\": \"string\",\n  \"company_address_line2\": \"string\",\n  \"company_city\": \"string\",\n  \"company_state_province\": \"string\",\n  \"company_postal_code\": \"string\",\n  \"company_country\": \"string\",\n  \"company_email\": \"string\",\n  \"company_phone\": \"string\",\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"brand_colors\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"f6ef1328-92a1-4200-acbb-be96b71f3f83","name":"Contact Bulk Actions","description":{"content":"Perform bulk operations on contacts such as batch tagging, deletion, and export.","type":"text/plain"},"item":[{"id":"0aeec34f-f22d-427e-b794-6ad895a0a187","name":"Preview Bulk Action","request":{"name":"Preview Bulk Action","description":{"content":"Preview a contact bulk action (mass edit) — no changes are made.\n\n**Required Scopes:** `contacts:update`\n\nValidates the selection and every action against the tenant (tags/list/\ncustom field existence + value/type checks, `set_field` allowlist),\ncomputes how many contacts the selection currently matches and returns a\nsigned `confirmation_token`. Submit the IDENTICAL `selection` + `actions`\ntogether with that token to `/contacts/bulk-actions/execute` within\n`expires_in_seconds` (~10 minutes).\n\nSelection modes:\n- `{\"mode\": \"ids\", \"ids\": [...]}` — explicit contact ids (max 10000).\n- `{\"mode\": \"filter\", \"filter\": {...}}` — same params as `GET /contacts`\n  (`search`, `include_live_chat`, `custom_field_id/value/value_to/op`,\n  `list_id` + `list_subscription_status`/`list_subscription_channel`,\n  `is_blocked`); `{}` targets ALL contacts.\n\nAction types (executed in order per contact): `set_field`,\n`set_custom_field`, `add_tags`, `remove_tags`, `add_to_list`,\n`set_blocked` (`{\"type\": \"set_blocked\", \"blocked\": true|false}` — blocks or\nunblocks the contact and all of its identifiers on every channel; can be\nmixed with the other actions).","type":"text/plain"},"url":{"path":["api","v1","contacts","bulk-actions","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"selection\": {\n    \"mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"actions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3655ffac-e913-478b-b35d-ae0743e78c90","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"selection\": {\n    \"mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"actions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"affected_count\": 234,\n  \"sample\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confirmation_token\": \"string\",\n  \"expires_in_seconds\": 249\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d2a4b939-85c0-4cfe-8d8b-58f9063a31f6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"selection\": {\n    \"mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"actions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a1cb1ad0-6675-4f75-ab19-329210a7e06d","name":"Execute Bulk Action","request":{"name":"Execute Bulk Action","description":{"content":"Execute a previously previewed contact bulk action (202 Accepted).\n\n**Required Scopes:** `contacts:update`\n\nRequires the `confirmation_token` from `/contacts/bulk-actions/preview`\ntogether with the IDENTICAL `selection` + `actions`. Errors:\n\n- **400** `{\"detail\": {\"code\": \"TOKEN_INVALID\" | \"TOKEN_EXPIRED\", ...}}` —\n  malformed/forged/expired token, or token minted for another tenant/user.\n- **409** `{\"detail\": {\"code\": \"PAYLOAD_MISMATCH\", ...}}` — the submitted\n  selection/actions differ from what was previewed.\n- **409** `{\"detail\": {\"code\": \"AFFECTED_COUNT_DRIFT\", \"affected_count\": N,\n  ...}}` — the match count changed since preview (any difference when the\n  previewed count was < 100, otherwise more than ±2%). Re-preview and\n  confirm again with the new count.\n\nOn success the run is recorded as a `BulkActionLog` audit row and executed\nas a chunked background job; poll `poll_url` until `status` is\n`completed`/`failed`. `affected_count` on the poll response is the running\ntotal of actually-changed contacts.","type":"text/plain"},"url":{"path":["api","v1","contacts","bulk-actions","execute"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"selection\": {\n    \"mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"actions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confirmation_token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9df50f86-6411-4ca9-a024-7da3069264dd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions","execute"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"selection\": {\n    \"mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"actions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confirmation_token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"bulk_action_id\": \"string\",\n  \"status\": \"string\",\n  \"poll_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"83765975-277d-4585-9a4a-02d94b11d591","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions","execute"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"selection\": {\n    \"mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filter\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"actions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confirmation_token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fb9c5a67-6f01-4b60-b534-cf20f54c99f9","name":"List Bulk Actions","request":{"name":"List Bulk Actions","description":{"content":"List this tenant's contact bulk action runs, newest first (audit history).\n\n**Required Scopes:** `contacts:update`\n\nReturns the standard `{\"items\": [...], \"pagination\": {...}}` envelope;\neach item has the same shape as `GET /contacts/bulk-actions/{id}`.","type":"text/plain"},"url":{"path":["api","v1","contacts","bulk-actions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page (max 100)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ab1849c4-a5d3-4371-8827-1619bf0b73bf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6fb258fc-4d87-4db5-8a83-8a897c022903","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8a7738a7-04a7-4034-8199-524db7f21b6c","name":"Get Bulk Action","request":{"name":"Get Bulk Action","description":{"content":"Poll one contact bulk action run (status + audit detail).\n\n**Required Scopes:** `contacts:update`\n\n`status`: `pending` → `processing` → `completed` | `failed`.\n`affected_count` is the running total of actually-changed contacts\n(committed per chunk) and the final total once completed. `error` carries\nthe failure reason (`failed`) or a truncated summary of individually\nskipped contacts (`completed`).","type":"text/plain"},"url":{"path":["api","v1","contacts","bulk-actions",":bulk_action_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bulk_action_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d5d39223-1f55-4b9a-8898-19e72206a4b1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions",":bulk_action_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bulk_action_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"status\": \"string\",\n  \"affected_count\": 1343,\n  \"selection\": {\n    \"key_0\": \"string\",\n    \"key_1\": 6699,\n    \"key_2\": \"string\",\n    \"key_3\": \"string\",\n    \"key_4\": 5116.222432941238\n  },\n  \"actions\": [\n    {\n      \"key_0\": 674,\n      \"key_1\": 7780\n    },\n    {\n      \"key_0\": false\n    }\n  ],\n  \"created_at\": \"string\",\n  \"error\": \"string\",\n  \"started_at\": \"string\",\n  \"completed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1ca1174b-bbd8-4170-ab82-1264cd4302e5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","bulk-actions",":bulk_action_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bulk_action_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"17c34879-7ec6-402d-adb6-6d713eb34074","name":"Contacts","description":{"content":"Create, update, search, and manage customer contacts across all channels. Supports tags, custom fields, and subscription management.","type":"text/plain"},"item":[{"id":"f1d0118b-0d24-4f42-9a15-c5416c9a78b8","name":"Create Contact","request":{"name":"Create Contact","description":{"content":"Create a new contact.\n\nHonors the tenant's `duplicate_contact_mode` setting (or the optional\n`duplicate_mode` body field for a per-request override):\n\n- `auto_merge` (default): if a contact already exists with the same phone,\n  email, or platform identifier, return that contact (oldest wins as\n  primary). Incoming new methods/fields are merged into it.\n- `allow_duplicates`: always create a new contact. The response includes a\n  `potential_duplicates` list with any contacts sharing identifiers.\n- `dont_allow_duplicates`: returns HTTP 409 with a `duplicates` array if\n  a duplicate is detected; nothing is created.\n\n`custom_fields` (optional): typed custom field values keyed by custom\nfield definition ID (preferred) or field `key`. Validated BEFORE anything\nis written (422 per-field errors, see PATCH /contacts/{id}); written in the\nsame transaction as the contact. In `auto_merge`, when an existing contact\nis matched, the given values OVERWRITE its values only if the caller also\nholds `contacts:update`; otherwise they only fill fields that are empty\n(fields that already have a value are skipped). null/empty entries are\nignored on create.\n\n**Required Scopes:** `contacts:create`","type":"text/plain"},"url":{"path":["api","v1","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"contact_methods\": [\n    {\n      \"method_type\": \"whatsapp_id\",\n      \"value\": \"1234567890\"\n    }\n  ],\n  \"email\": \"john@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Doe\",\n  \"phone\": \"+1234567890\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c3e62ce5-9430-4d98-a053-8516e18bc926","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"first_name\": \"string\",\n  \"last_name\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"wtT6pT@irNpqbHORWQvYOYnxTnFBtD.lo\",\n  \"languages\": \"string\",\n  \"birthday\": \"1953-08-28\",\n  \"contact_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"duplicate_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"custom_fields\": {\n    \"key_0\": false\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"first_name\": \"string\",\n  \"last_name\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"BfpoHEiJ@gndeRXyVYrQLCYsiNYBGwvtG.fjz\",\n  \"updated_at\": \"string\",\n  \"avatar_url\": \"string\",\n  \"avatar_is_custom\": false,\n  \"language\": \"string\",\n  \"languages\": \"string\",\n  \"birthday\": \"1956-10-05\",\n  \"is_blocked\": false,\n  \"is_archived\": false,\n  \"blocked_inbound_count\": 0,\n  \"last_blocked_inbound_at\": \"1953-09-05T20:02:23.697Z\",\n  \"source\": \"string\",\n  \"last_contacted_at\": \"1978-07-25T03:36:49.693Z\",\n  \"custom_fields\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"contact_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscriptions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"conversation_count\": 3482,\n  \"last_conversation_at\": \"1964-10-01T23:13:11.127Z\",\n  \"potential_duplicates\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"merged_from\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"def59065-0b87-496b-8fbb-58d782e5d80e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"first_name\": \"string\",\n  \"last_name\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"wtT6pT@irNpqbHORWQvYOYnxTnFBtD.lo\",\n  \"languages\": \"string\",\n  \"birthday\": \"1953-08-28\",\n  \"contact_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"duplicate_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"custom_fields\": {\n    \"key_0\": false\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0bc5dbc2-c61d-4080-8f07-4e1f7713827b","name":"List Contacts","request":{"name":"List Contacts","description":{"content":"List contacts with pagination, search, server-side sorting, custom-field\nand list-subscription filtering.\n\n**Required Scopes:** `contacts:read`\n\nReturns a paginated list of contacts matching the search criteria.\nEach contact includes tags and custom fields.\n\n**Sorting** (full-dataset, applied in SQL before pagination):\n- `sort_by`: `created_at` (default), `name`, `email`, `custom_field`. Unknown\n  values return 422.\n- `sort_dir`: `asc` or `desc` (default `desc`).\n- `sort_by=custom_field` requires `custom_field_id`. Contacts without a value\n  for the field still appear (LEFT JOIN); NULLs sort first on asc, last on desc.\n\n**Custom-field filter** (combinable with `search`):\nThe match strategy is selected SERVER-SIDE from the field's `field_type`\n(looked up from `custom_field_definitions`), NOT from a client-trusted\noperator. `custom_field_op` may narrow/override within what the type allows.\n\n- `custom_field_id` alone → contacts that have ANY value for that field.\n- **text** (and email/phone/url) → CONTAINS match (`value LIKE %v%`, with `%`\n  and `_` in the input escaped to literals). This is the default for these\n  types. (Behavior change: previously exact-match.)\n- **select** → EXACT match; the supplied value must be one of the field's\n  configured `options` (422 if not).\n- **number** → operator-based via `custom_field_op`:\n  `eq` (default), `gt`, `lt`, `gte`, `lte`, `between`. For `between`,\n  `custom_field_value` is the lower bound and `custom_field_value_to` the\n  (inclusive) upper bound; lower must be <= upper. Values must parse as\n  numbers. Comparisons are numeric (TEXT values are regex-guarded then cast\n  to DECIMAL, so non-numeric rows never match and never error).\n- **other types** (boolean/date/datetime/location/multiselect/collection) →\n  EXACT match (unchanged, backwards compatible).\n\n`custom_field_op` allowlist: `eq`, `contains`, `gt`, `lt`, `gte`, `lte`,\n`between`. Anything else is rejected by FastAPI (422). Numeric operators are\nonly valid for `number` fields and `contains` only for text-like fields;\nincompatible combinations return 422.\n\nThe `custom_field_id` always validates the field belongs to the tenant\n(422 if not).\n\n**List-subscription filter** (combinable with `search` and the custom-field\nfilter — all filters are AND-ed, and `total` always reflects the filtered\nset):\n\n- `list_id` → a `lists.id`; validated to belong to the tenant (422 if not).\n- `list_subscription_status` (default `subscribed` when `list_id` is set):\n  - `subscribed` | `pending` | `unsubscribed` | `bounced` | `complained` →\n    the contact has a subscription row with EXACTLY that status.\n  - `any` → the contact has a subscription row for the list in ANY status.\n  - `not_subscribed` → the contact has NO `subscribed` row for the list\n    (i.e. not currently subscribed; includes contacts with no row at all).\n- `list_subscription_channel` → optional narrowing on the subscription's\n  channel (`email`, `sms`, `whatsapp`, `telegram`, `messenger`,\n  `instagram`, `browser_push`). Subscription rows are PER CHANNEL, so this\n  answers \"subscribed to list X via WhatsApp\". Applied inside the\n  EXISTS/NOT EXISTS.\n- Supplying `list_subscription_status` or `list_subscription_channel`\n  WITHOUT `list_id` returns 422.\n\nContacts are matched with a correlated `EXISTS`/`NOT EXISTS`, so a contact\nsubscribed to the same list via several channels is returned ONCE.\nFor a DYNAMIC list (membership computed from segment conditions, no\nsubscription rows) the list's conditions are evaluated instead:\n`subscribed`/`any` = matches the conditions, `not_subscribed` = does not;\nthe row-level statuses (`pending`/`unsubscribed`/`bounced`/`complained`)\ncannot exist and match nothing.\n\n**Tag-membership filter** (combinable with `search` and every other filter —\nall AND-ed):\n\n- `tag_id` → a `tags.id`; validated to belong to the tenant (422 if not).\n  Restricts to contacts that carry that tag via the `contact_tags`\n  association.\n- `tag_id` is REPEATABLE (`?tag_id=a&tag_id=b`): several ids match contacts\n  carrying ANY of them (OR / at-least-one). Duplicate ids are ignored.\n- This filters by tag **id** (stable), never by tag name. It is a SEPARATE\n  parameter from `search` on purpose: `search` matches name/email/phone/IDs\n  only and never matches tags, so \"find contacts by tag\" uses `tag_id` and\n  is not conflated with name search. When both are given, the text `search`\n  is applied WITHIN the set of contacts carrying the tag(s).\n\n**Blocked filter** (`is_blocked`, combinable with every other filter):\n`true` → only blocked contacts, `false` → only unblocked contacts. \"Blocked\"\nmeans the contact's own blocked flag (`is_blocked` on the item). The same\nparameter is accepted by `POST /contacts/export` and the bulk-actions filter\nselection. Every item also carries `blocked_inbound_count` and\n`last_blocked_inbound_at` (inbound messages dropped because of the block).\n\n**Optional extras** (`include`, comma-separated; unknown tokens → 422):\n\n- `subscriptions` → each item gets `subscriptions: [{list_id, list_name,\n  channel_type, status}]` — only `subscribed`/`pending` rows, sorted by\n  list name then channel; `[]` when none.\n- `conversation_stats` → each item gets `conversation_count` (0 when none)\n  and `last_conversation_at` (latest conversation activity, null when none).\n- Without `include` these fields are `null`. Each extra costs one batched\n  query per page. `contact_methods` is always present on every item.\n\n**Response format:**\n```json\n{\n    \"items\": [...],\n    \"pagination\": {\n        \"total\": 150,\n        \"page\": 1,\n        \"page_size\": 20,\n        \"total_pages\": 8,\n        \"has_next\": true,\n        \"has_prev\": false\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","contacts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page (max 250)"},{"disabled":false,"key":"search","value":"string","description":"Search by name, phone, email, or IDs"},{"disabled":false,"key":"include_live_chat","value":"false","description":"Include live chat contacts"},{"disabled":false,"key":"sort_by","value":"created_at","description":"Field to sort by. 'custom_field' requires custom_field_id."},{"disabled":false,"key":"sort_dir","value":"desc","description":"Sort direction"},{"disabled":false,"key":"custom_field_id","value":"string","description":"custom_field_definitions.id used for filtering and/or as the sort target when sort_by='custom_field'."},{"disabled":false,"key":"custom_field_value","value":"string","description":"Value to filter by. Requires custom_field_id. The match strategy is chosen SERVER-SIDE from the field's field_type (text=contains, select=exact, number=operator-based). If custom_field_id is set without this, filters to contacts that have ANY value for that field. For op='between' this is the lower bound."},{"disabled":false,"key":"custom_field_value_to","value":"string","description":"Upper bound for the custom-field filter. Only used when custom_field_op='between' (number fields only); ignored otherwise."},{"disabled":false,"key":"custom_field_op","value":"gte","description":"Optional comparison operator for the custom-field filter. If omitted, defaults are derived from the field_type (text->contains, select->eq, number->eq, others->eq). Numeric operators (gt/lt/gte/lte/between) are only valid for number fields; 'contains' is only valid for text-like fields. Incompatible combinations return 422."},{"disabled":false,"key":"list_id","value":"string","description":"lists.id — filter to contacts by their subscription to that list. Must belong to the tenant (422 if not)."},{"disabled":false,"key":"list_subscription_status","value":"unsubscribed","description":"Subscription status to match for list_id. Defaults to 'subscribed'. 'any' = a subscription row in ANY status; 'not_subscribed' = NOT currently subscribed (includes contacts with no row at all). Requires list_id (422)."},{"disabled":false,"key":"list_subscription_channel","value":"messenger","description":"Optionally narrow the list filter to one subscription channel (subscription rows are per channel). Requires list_id (422)."},{"disabled":false,"key":"tag_id","value":"string","description":"tags.id — filter to contacts carrying that tag. Repeatable (?tag_id=a&tag_id=b) to match contacts carrying ANY of the given tags (OR). Filters by tag id, NOT tag name; this is distinct from `search` (which never matches tags). Each id must belong to the tenant (422 if not). Combinable with `search` and the other filters (all AND-ed)."},{"disabled":false,"key":"tag_id","value":"string","description":"tags.id — filter to contacts carrying that tag. Repeatable (?tag_id=a&tag_id=b) to match contacts carrying ANY of the given tags (OR). Filters by tag id, NOT tag name; this is distinct from `search` (which never matches tags). Each id must belong to the tenant (422 if not). Combinable with `search` and the other filters (all AND-ed)."},{"disabled":false,"key":"is_blocked","value":"true","description":"Blocked-state filter: true = only blocked contacts, false = only unblocked contacts, omitted = all. Uses the contact's blocked flag. Combinable with every other filter."},{"disabled":false,"key":"include","value":"string","description":"Comma-separated optional extras to embed in each item: `subscriptions` (active list subscriptions), `conversation_stats` (conversation_count + last_conversation_at). Unknown tokens return 422."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"bf74c093-2a8c-4806-bc4b-f2547c2739e3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"search","value":"string"},{"key":"include_live_chat","value":"false"},{"key":"sort_by","value":"created_at"},{"key":"sort_dir","value":"desc"},{"key":"custom_field_id","value":"string"},{"key":"custom_field_value","value":"string"},{"key":"custom_field_value_to","value":"string"},{"key":"custom_field_op","value":"gte"},{"key":"list_id","value":"string"},{"key":"list_subscription_status","value":"unsubscribed"},{"key":"list_subscription_channel","value":"messenger"},{"key":"tag_id","value":"string"},{"key":"tag_id","value":"string"},{"key":"is_blocked","value":"true"},{"key":"include","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"53628e60-3bc4-4193-a776-9598e4c5a000","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"search","value":"string"},{"key":"include_live_chat","value":"false"},{"key":"sort_by","value":"created_at"},{"key":"sort_dir","value":"desc"},{"key":"custom_field_id","value":"string"},{"key":"custom_field_value","value":"string"},{"key":"custom_field_value_to","value":"string"},{"key":"custom_field_op","value":"gte"},{"key":"list_id","value":"string"},{"key":"list_subscription_status","value":"unsubscribed"},{"key":"list_subscription_channel","value":"messenger"},{"key":"tag_id","value":"string"},{"key":"tag_id","value":"string"},{"key":"is_blocked","value":"true"},{"key":"include","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6d529f70-c104-40f7-ae4c-dde89f3d5678","name":"Bulk Delete Contacts","request":{"name":"Bulk Delete Contacts","description":{"content":"Bulk delete multiple contacts and all their related data.\n\nAccepts up to 100 contact IDs. Each contact is deleted individually\nusing the same full-cascade GDPR deletion as single delete (conversations,\nmessages, attachments, email transcripts, live-chat sessions and flow runs\nare all removed). Each contact commits independently, so one failure does\nnot roll back the others.\n\n**Required Scopes:** `contacts:delete`","type":"text/plain"},"url":{"path":["api","v1","contacts","bulk-delete"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"54b634d0-4c71-432b-a6e8-4cfe3cbbdbd6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","bulk-delete"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success_count\": 8583,\n  \"failed_count\": 3583\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"680a6cbe-a522-42dc-95b3-3205f54eac9f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","bulk-delete"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f6e38a76-17e0-4a6c-84ce-abd26ede46ce","name":"List Duplicate Groups","request":{"name":"List Duplicate Groups","description":{"content":"List groups of contacts sharing the same identifier (potential duplicates).\n\n**Required Scopes:** `contacts:read`\n\nReturns groups by signal value. Each group contains 2+ contacts that\nshare the signal, sorted by `created_at` ascending (oldest first — the\ntypical primary candidate).","type":"text/plain"},"url":{"path":["api","v1","contacts","duplicates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"signals","value":"phone,email,platform_id","description":"Comma-separated list of signals to use for duplicate detection. Allowed: phone, email, platform_id, name. 'name' is opt-in (false-positive prone)."},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"952fef6b-5174-45bc-a23c-0e7cf4be4a89","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","duplicates"],"host":["{{baseUrl}}"],"query":[{"key":"signals","value":"phone,email,platform_id"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fa37fa73-65ab-4579-878c-76f4f893bc9e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","duplicates"],"host":["{{baseUrl}}"],"query":[{"key":"signals","value":"phone,email,platform_id"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"eacc32c5-f1b3-413a-8c32-76b9c5c3a1b7","name":"Export Contacts","request":{"name":"Export Contacts","description":{"content":"Start an async contact export to CSV or XLSX (202 Accepted).\n\n**Required Scopes:** `contacts:export`\n\nAccepts the SAME filter parameters as ``GET /contacts`` (search +\ncustom-field filter + list-subscription filter) so a filtered contact list\ncan be exported exactly as seen on screen. With no filters, ALL contacts are\nexported.\n\nThe file's column headers are exactly what ``POST /email-contacts/import``\nauto-detects (including a leading ``contact_id`` column and one flattened\n``custom.<key>`` column per custom field), so the round-trip\n*export → edit in Excel → re-import* needs no manual column mapping.\n\nPoll ``poll_url`` until ``status == completed``, then fetch the file via\n``download_url`` (302 redirect to a short-lived signed URL).\n\nExports are recorded in the audit trail (they are a full-PII dump).","type":"text/plain"},"url":{"path":["api","v1","contacts","export"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"format","value":"csv","description":"Output file format"},{"disabled":false,"key":"search","value":"string","description":"Search by name, phone, email, or IDs (same as GET /contacts)"},{"disabled":false,"key":"include_live_chat","value":"false","description":"Include live chat contacts (same as GET /contacts)"},{"disabled":false,"key":"custom_field_id","value":"string","description":"custom_field_definitions.id used for filtering (same as GET /contacts)."},{"disabled":false,"key":"custom_field_value","value":"string","description":"Custom-field filter value (same semantics as GET /contacts)."},{"disabled":false,"key":"custom_field_value_to","value":"string","description":"Upper bound for custom_field_op='between' (same as GET /contacts)."},{"disabled":false,"key":"custom_field_op","value":"gte","description":"Custom-field comparison operator (same as GET /contacts)."},{"disabled":false,"key":"list_id","value":"string","description":"lists.id — filter by list subscription (same as GET /contacts)."},{"disabled":false,"key":"list_subscription_status","value":"unsubscribed","description":"Subscription status for list_id, default 'subscribed' (same semantics as GET /contacts). Requires list_id."},{"disabled":false,"key":"list_subscription_channel","value":"messenger","description":"Narrow the list filter to one subscription channel (same as GET /contacts). Requires list_id."},{"disabled":false,"key":"is_blocked","value":"true","description":"true = only blocked contacts, false = only unblocked (same as GET /contacts)."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"167faa6e-3cae-4f87-bce9-def5ae08d5d2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","export"],"host":["{{baseUrl}}"],"query":[{"key":"format","value":"csv"},{"key":"search","value":"string"},{"key":"include_live_chat","value":"false"},{"key":"custom_field_id","value":"string"},{"key":"custom_field_value","value":"string"},{"key":"custom_field_value_to","value":"string"},{"key":"custom_field_op","value":"gte"},{"key":"list_id","value":"string"},{"key":"list_subscription_status","value":"unsubscribed"},{"key":"list_subscription_channel","value":"messenger"},{"key":"is_blocked","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"message\": \"string\",\n  \"poll_url\": \"string\",\n  \"download_url\": \"string\",\n  \"status\": \"queued\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"97adc916-a6cb-45e6-be91-62eedf484357","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","export"],"host":["{{baseUrl}}"],"query":[{"key":"format","value":"csv"},{"key":"search","value":"string"},{"key":"include_live_chat","value":"false"},{"key":"custom_field_id","value":"string"},{"key":"custom_field_value","value":"string"},{"key":"custom_field_value_to","value":"string"},{"key":"custom_field_op","value":"gte"},{"key":"list_id","value":"string"},{"key":"list_subscription_status","value":"unsubscribed"},{"key":"list_subscription_channel","value":"messenger"},{"key":"is_blocked","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1bdc3668-8210-43aa-948b-804eb54de244","name":"Get Contact Export Status","request":{"name":"Get Contact Export Status","description":{"content":"Poll the status/progress of an async contact export job.\n\n**Required Scopes:** `contacts:export`\n\nWhen ``status`` is ``completed``, ``download_url`` points at the download\nendpoint (302 to a short-lived signed URL). ``failed`` carries\n``error_message``.","type":"text/plain"},"url":{"path":["api","v1","contacts","export",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4fde662d-bbbf-4a87-8a20-9b4de9abe255","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","export",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"progress_percent\": 0,\n  \"total_items\": 0,\n  \"processed_items\": 0,\n  \"format\": \"string\",\n  \"filename\": \"string\",\n  \"total_contacts\": 7805,\n  \"columns\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"download_url\": \"string\",\n  \"error_message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6ee1b9b4-2ac1-4194-9f9a-e12712f5dd3d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","export",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cdccaa4c-675a-4478-879d-a7a9b2f9df96","name":"Download Contact Export","request":{"name":"Download Contact Export","description":{"content":"Download a finished contact export (302 redirect to a signed URL).\n\n**Required Scopes:** `contacts:export`\n\nOnly the requesting tenant's own COMPLETED export jobs can be downloaded\n(404 unknown job, 403 foreign tenant, 409 not finished yet). A fresh\nshort-lived (60 min) signed Cloud Storage URL is minted on every call.\nWith ``?redirect=false`` the signed URL is returned as JSON\n``{\"download_url\": ..., \"filename\": ...}`` instead of a 302.","type":"text/plain"},"url":{"path":["api","v1","contacts","export",":job_id","download"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"redirect","value":"true","description":"true (default): 302 redirect to the signed URL. false: return {download_url, filename} JSON instead — needed by browser SPAs whose auth is Bearer-header-only (a top-level navigation cannot carry the header, and an XHR cannot follow the 302 to Cloud Storage because the bucket has no CORS rule)."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7f9ee56b-55fa-417c-b762-9b90fb770db4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts","export",":job_id","download"],"host":["{{baseUrl}}"],"query":[{"key":"redirect","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"73fda451-f6d0-4061-ab92-85100bc4f647","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts","export",":job_id","download"],"host":["{{baseUrl}}"],"query":[{"key":"redirect","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f6197f78-6042-4ba1-a212-d40ae297bcaa","name":"Get Contact Integrations","request":{"name":"Get Contact Integrations","description":{"content":"List the contact's external CRM / integration deep-links.\n\nAggregates links across every configured provider (HubSpot today; extensible\nto Salesforce/Shopify/etc.) so the frontend can render an \"Integrations\"\ncard linking straight to the contact's record in each system.\n\nReturns an empty ``items`` list (NOT 404) when the contact has no external\nlinks. 404 is only returned when the contact does not exist for this tenant.\n\n**Required Scopes:** `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b47971fc-371f-4eaf-883a-d008208e6c6d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f4064a26-6ccb-46b4-bd9d-f6b07baa129b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"978c6dd5-44f6-44d2-8c3c-c8ed4fe394fa","name":"Get Contact","request":{"name":"Get Contact","description":{"content":"Get a specific contact with custom fields and tags.\n\n**Required Scopes:** `contacts:read`\n\nIf the requested ID is the UUID of a contact that has been merged into\nanother (i.e., it appears in `contact_aliases.old_contact_id`), the\nresponse returns the surviving contact, includes a `merged_from`\nobject describing the merge, and sets the `X-Merged-Into` response\nheader to the surviving contact's UUID.","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"86db04ce-44ab-4f80-b479-63f859f08104","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"first_name\": \"string\",\n  \"last_name\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"BfpoHEiJ@gndeRXyVYrQLCYsiNYBGwvtG.fjz\",\n  \"updated_at\": \"string\",\n  \"avatar_url\": \"string\",\n  \"avatar_is_custom\": false,\n  \"language\": \"string\",\n  \"languages\": \"string\",\n  \"birthday\": \"1956-10-05\",\n  \"is_blocked\": false,\n  \"is_archived\": false,\n  \"blocked_inbound_count\": 0,\n  \"last_blocked_inbound_at\": \"1953-09-05T20:02:23.697Z\",\n  \"source\": \"string\",\n  \"last_contacted_at\": \"1978-07-25T03:36:49.693Z\",\n  \"custom_fields\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"contact_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscriptions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"conversation_count\": 3482,\n  \"last_conversation_at\": \"1964-10-01T23:13:11.127Z\",\n  \"potential_duplicates\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"merged_from\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"09391138-1886-41cb-8db4-46cfc02ff4d7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"721c4920-7fb8-4275-a734-dda194a26947","name":"Update Contact","request":{"name":"Update Contact","description":{"content":"Update a contact\n\n`custom_fields` (optional) MERGES typed custom field values, keyed by\ncustom field definition ID (preferred) or field `key`: only the given\nfields are touched, `null` / `\"\"` / `[]` clears one. Every entry is\nvalidated against the field type BEFORE anything is written; any failure\nreturns 422 with one structured error per field (`code`: unknown_field,\nduplicate_field, invalid_type, invalid_format, not_an_option,\nout_of_range, too_long, too_many_fields) and nothing is changed. When\n`custom_fields` is sent, the response includes the contact's\n`custom_fields` map.\n\nSetting `phone` or `email` to a value another contact already has follows\nthe workspace's duplicate contact setting: `allow_duplicates` saves it on\nthis contact too; `dont_allow_duplicates` returns HTTP 409\n(`detail: \"duplicate_contact\"`, with the other contacts' ids) and nothing\nis changed; `auto_merge` keeps this contact's current value and updates\nthe other fields. Contacts are never merged by an update; use\n`POST /contacts/{contact_id}/merge`.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"email\": \"john.smith@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Smith\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8e7a2763-ad01-45e4-8505-a52d46617300","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"email\": \"john.smith@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Smith\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"first_name\": \"string\",\n  \"last_name\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"BfpoHEiJ@gndeRXyVYrQLCYsiNYBGwvtG.fjz\",\n  \"updated_at\": \"string\",\n  \"avatar_url\": \"string\",\n  \"avatar_is_custom\": false,\n  \"language\": \"string\",\n  \"languages\": \"string\",\n  \"birthday\": \"1956-10-05\",\n  \"is_blocked\": false,\n  \"is_archived\": false,\n  \"blocked_inbound_count\": 0,\n  \"last_blocked_inbound_at\": \"1953-09-05T20:02:23.697Z\",\n  \"source\": \"string\",\n  \"last_contacted_at\": \"1978-07-25T03:36:49.693Z\",\n  \"custom_fields\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"contact_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscriptions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"conversation_count\": 3482,\n  \"last_conversation_at\": \"1964-10-01T23:13:11.127Z\",\n  \"potential_duplicates\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"merged_from\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a8519b9e-c46d-421b-bf48-b656692b0ac8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"email\": \"john.smith@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Smith\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d52247c0-fd5d-44ab-9a9e-08a954156104","name":"Partial Update Contact","request":{"name":"Partial Update Contact","description":{"content":"Partial update a contact\n\n`custom_fields` (optional) MERGES typed custom field values, keyed by\ncustom field definition ID (preferred) or field `key`: only the given\nfields are touched, `null` / `\"\"` / `[]` clears one. Every entry is\nvalidated against the field type BEFORE anything is written; any failure\nreturns 422 with one structured error per field (`code`: unknown_field,\nduplicate_field, invalid_type, invalid_format, not_an_option,\nout_of_range, too_long, too_many_fields) and nothing is changed. When\n`custom_fields` is sent, the response includes the contact's\n`custom_fields` map.\n\nSetting `phone` or `email` to a value another contact already has follows\nthe workspace's duplicate contact setting: `allow_duplicates` saves it on\nthis contact too; `dont_allow_duplicates` returns HTTP 409\n(`detail: \"duplicate_contact\"`, with the other contacts' ids) and nothing\nis changed; `auto_merge` keeps this contact's current value and updates\nthe other fields. Contacts are never merged by an update; use\n`POST /contacts/{contact_id}/merge`.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"email\": \"john.smith@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Smith\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c7111f77-9cf7-4821-9090-5c592b5df07b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"email\": \"john.smith@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Smith\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"first_name\": \"string\",\n  \"last_name\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"BfpoHEiJ@gndeRXyVYrQLCYsiNYBGwvtG.fjz\",\n  \"updated_at\": \"string\",\n  \"avatar_url\": \"string\",\n  \"avatar_is_custom\": false,\n  \"language\": \"string\",\n  \"languages\": \"string\",\n  \"birthday\": \"1956-10-05\",\n  \"is_blocked\": false,\n  \"is_archived\": false,\n  \"blocked_inbound_count\": 0,\n  \"last_blocked_inbound_at\": \"1953-09-05T20:02:23.697Z\",\n  \"source\": \"string\",\n  \"last_contacted_at\": \"1978-07-25T03:36:49.693Z\",\n  \"custom_fields\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"contact_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscriptions\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"conversation_count\": 3482,\n  \"last_conversation_at\": \"1964-10-01T23:13:11.127Z\",\n  \"potential_duplicates\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"merged_from\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4bd0b2a2-84d9-49a1-af85-1d710aa0e7d8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"birthday\": \"1990-04-23\",\n  \"email\": \"john.smith@example.com\",\n  \"languages\": \"en,de\",\n  \"name\": \"John Smith\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2c2c3977-7f22-4c47-a73c-0bb0a2ebafbe","name":"Delete Contact","request":{"name":"Delete Contact","description":{"content":"Delete a contact and all related data.\n\nPerforms GDPR-compliant deletion (full cascade):\n- All PII is removed (subscriptions, custom fields, tags, campaign data)\n- The contact's conversations AND their messages, attachments (incl. stored\n  files), reactions, email transcripts, live-chat sessions and flow runs are\n  permanently deleted — nothing connected to the customer is retained\n- Billing records are preserved for invoicing\n\n**Required Scopes:** `contacts:delete`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"15b4d609-4d85-46ea-ab84-f96657e13135","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"details\": {\n    \"conversations_anonymized\": 2,\n    \"custom_fields_removed\": 5,\n    \"subscriptions_removed\": 3\n  },\n  \"message\": \"Contact deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"701f1cf8-b040-469b-b9e8-5293bd656b9f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d5521b56-5b17-4c89-bbb8-1f634d7d20f7","name":"Preview Merge Contacts","request":{"name":"Preview Merge Contacts","description":{"content":"Preview what merging contacts would do to running flows. Nothing is changed.\n\n**Required Scopes:** `contacts:update`\n\nTakes the same body as `POST /contacts/{contact_id}/merge` and picks the\nsurviving contact the same way (oldest unless `primary_override: true`).\n\nRunning flows of merged contacts keep running on the surviving contact. A\nflow run is only stopped when the surviving contact is already running the\nsame flow, or when several merged contacts run the same flow (the most\nrecently started one keeps running). The response lists how many runs\nwould be stopped per flow.\n\nReturns 404 if any contact does not exist in this workspace, 422 if the\nrequest names no contact to merge.","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","merge","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"secondary_ids\": [\n    \"string\"\n  ],\n  \"primary_override\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"5ff2f744-5f2e-474f-841e-07b87a97f50c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","merge","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"secondary_ids\": [\n    \"string\"\n  ],\n  \"primary_override\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"primary_contact_id\": \"string\",\n  \"flow_runs_to_cancel\": 9425,\n  \"flow_runs_to_keep\": 5724,\n  \"cancelled_flows\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"efe0d89e-104a-4d3d-a60f-41857820efbd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","merge","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"secondary_ids\": [\n    \"string\"\n  ],\n  \"primary_override\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3e06fb38-8829-4b95-97c4-90235a761c8e","name":"Merge Contacts","request":{"name":"Merge Contacts","description":{"content":"Manually merge one or more contacts into the contact at `{contact_id}`.\n\n**Required Scopes:** `contacts:update`\n\nBy default the OLDEST contact in the set (`{contact_id}` plus the\n`secondary_ids`) is used as primary. Pass `primary_override: true` to\nforce `{contact_id}` as primary even if a secondary is older.\n\nAll conversations, messages, notes, custom field values, tags,\nsubscriptions, and contact methods are migrated to the primary. The\nsecondary contact rows are hard-deleted; their UUIDs continue to\nresolve to the primary via `contact_aliases`.","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"secondary_ids\": [\n    \"string\"\n  ],\n  \"primary_override\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"66eb83d4-83a4-4f5e-b42b-6d7fc120b576","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"secondary_ids\": [\n    \"string\"\n  ],\n  \"primary_override\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact\": {\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"first_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"phone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_is_custom\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"languages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"birthday\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_blocked\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_archived\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"blocked_inbound_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_blocked_inbound_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_contacted_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"custom_fields\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tags\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"contact_methods\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subscriptions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_conversation_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"potential_duplicates\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"merged_from\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"merged_count\": 2877\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5eca8f74-fa3c-42de-a50e-b995cd224840","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"secondary_ids\": [\n    \"string\"\n  ],\n  \"primary_override\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8132b90c-5b9d-4891-9238-6b6473ade553","name":"Get Contact Lists","request":{"name":"Get Contact Lists","description":{"content":"Get all list memberships/subscriptions for a contact.\n\n**Required Scopes:** `contacts:read`\n\nReturns all lists that the contact is subscribed to via the unified subscription system,\nincluding channel-specific information and subscription status.\n\nFor newsletter lists, the same contact can be subscribed via multiple channels,\nso there will be separate entries for each channel subscription.","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","lists"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c287b228-6ec8-45bf-95fc-aa670450fb3d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","lists"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"c123\",\n  \"contact_name\": \"John Doe\",\n  \"lists\": [\n    {\n      \"channel_type\": \"email\",\n      \"list_id\": \"list1\",\n      \"list_name\": \"Newsletter\",\n      \"list_type\": \"newsletter\",\n      \"membership_id\": \"sub123\",\n      \"subscribed_at\": \"2025-01-15T10:30:00Z\",\n      \"subscription_status\": \"subscribed\"\n    }\n  ],\n  \"total_memberships\": 2\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"34ed19a5-1b0f-4f95-8226-d4dfb1359c39","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","lists"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"710bb1be-b4e5-4dc0-a94a-6386ef73d605","name":"Get Contact Link Activity","request":{"name":"Get Contact Link Activity","description":{"content":"Get all link click activity for a specific contact.\n\nReturns all tracked links the contact has clicked, including:\n- Total click count\n- Unique links clicked\n- Device breakdown (desktop, mobile, tablet, other)\n- Recent click events with link details\n- Top 5 most clicked links by this contact\n\n**Required Scopes:** `contacts:read`\n\nArgs:\n    contact_id: The contact's UUID\n    limit: Maximum number of recent clicks to return (default: 50, max: 200)","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","link-activity"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ab2a5997-c3cb-444f-b31a-c8144338cfe3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","link-activity"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"string\",\n  \"total_clicks\": 1039,\n  \"unique_links\": 3990,\n  \"device_breakdown\": {\n    \"key_0\": 6447,\n    \"key_1\": 2860\n  },\n  \"links\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cd20afa7-e8da-4543-aebd-8e415a55564a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","link-activity"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b724f4ae-c720-4766-9349-35d35e05fa5d","name":"Get Contact Available Channels","request":{"name":"Get Contact Available Channels","description":{"content":"Get list of channels available to reach a contact.\n\nReturns all channels the tenant has configured that the contact\nhas identifiers for, along with channel-specific status:\n\n- **WhatsApp**: Includes window_status with 24h messaging window info\n- **Email/Telegram/Messenger/Instagram**: Shows as available or unavailable\n\nWhen `for_user_id` is not provided, the current user's internal ID is\nautomatically resolved from the auth token and used for mailbox access\nfiltering.\n\n**Required Scopes:** `contacts:read`\n\n**Response:**\n```json\n{\n    \"contact_id\": \"uuid\",\n    \"channels\": [\n        {\n            \"channel_id\": \"uuid\",\n            \"channel_type\": \"whatsapp\",\n            \"channel_name\": \"WhatsApp Business\",\n            \"identifier\": \"+1234567890\",\n            \"status\": \"available\" | \"template_required\" | \"unavailable\",\n            \"window_status\": {\n                \"in_window\": false,\n                \"requires_template\": true,\n                \"last_customer_message_at\": \"2026-01-14T10:00:00Z\",\n                \"window_end_at\": \"2026-01-15T10:00:00Z\"\n            }\n        },\n        {\n            \"channel_id\": \"uuid\",\n            \"channel_type\": \"email\",\n            \"channel_name\": \"Support Email\",\n            \"identifier\": \"john@example.com\",\n            \"status\": \"available\"\n        }\n    ]\n}\n```","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","available-channels"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"for_user_id","value":"string","description":"Filter email mailboxes by user access (internal user UUID). If not provided, automatically resolved from the authenticated user."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"902c4adb-a086-409d-b835-a74ff31a0dfc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","available-channels"],"host":["{{baseUrl}}"],"query":[{"key":"for_user_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"string\",\n  \"channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"648a0081-c0fc-4897-8b50-175f3f535035","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","available-channels"],"host":["{{baseUrl}}"],"query":[{"key":"for_user_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a6a72270-f476-4921-9384-fd89a664116d","name":"Block Contact","request":{"name":"Block Contact","description":{"content":"Block a contact across all channels.\n\nBlocks the contact and its identifiers. Incoming messages from any of the\ncontact's phone numbers, email addresses and channel ids are dropped (and\ncounted in ``blocked_inbound_count``) and outgoing sends are refused with\n409 ``CONTACT_BLOCKED`` while the contact is blocked. Verified and\nchannel-native identifiers (the channel account the contact messaged\nfrom, verified email addresses) stay blocked even if the contact is\ndeleted and later re-created; unverified, manually entered details are\ncovered only while the contact exists and is blocked. Idempotent.\n\nCustom-Inbox restricted members can only block contacts they can reach\n(otherwise 404).\n\nFires ``contact.updated`` when the contact was not already blocked.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","block"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"925f7e23-4826-461f-9c28-699983488fe8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","block"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6b06d3c8-0e8b-464d-8adf-0934d2f654a7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","block"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a566c9a1-fd87-4554-a009-d9cb29407cf9","name":"Unblock Contact","request":{"name":"Unblock Contact","description":{"content":"Unblock a contact across all channels.\n\nClears the contact block and removes the blocks on all of its identifiers\n(every channel), including its email addresses on the email sender block\nlist. Idempotent.\n\nCustom-Inbox restricted members can only unblock contacts they can reach\n(otherwise 404).\n\nFires ``contact.updated`` when the contact was blocked.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","unblock"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"801194d0-43a8-43bc-92bd-54afbe4a7a6a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","unblock"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d72225ae-5eea-4b8a-bfbc-0e70dd4cab74","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","unblock"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"018f755f-51e4-4f7f-85e6-61bc4f11977c","name":"Upload Contact Avatar","request":{"name":"Upload Contact Avatar","description":{"content":"Upload a profile picture for a contact.\n\nThe image is downscaled to 256px and stored in our own bucket, then served\nfrom the permanent `/api/v1/public/avatar/...` proxy. A manually uploaded\navatar is marked `avatar_is_custom` and is NEVER overwritten by the\nchannel's own profile picture — remove it (DELETE this endpoint) to let\nplatform syncing resume.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) "}]}},"response":[{"id":"0e07ae5a-3d72-4d97-afb4-b1409e61cec0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"string\",\n  \"success\": true,\n  \"avatar_url\": \"string\",\n  \"avatar_is_custom\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e6a40fab-99a7-40f8-a562-8a4a253df263","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b136e3f3-d011-4560-8cc9-45d351110d21","name":"Delete Contact Avatar","request":{"name":"Delete Contact Avatar","description":{"content":"Remove a contact's profile picture.\n\nClears the stored image and re-opens platform syncing: the next inbound\nmessage from this contact re-mirrors whatever picture the channel currently\nreports. Until then the UI shows the contact's initials.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"755f6be8-7ea5-4193-b929-b5c7c2566ac2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"string\",\n  \"success\": true,\n  \"avatar_url\": \"string\",\n  \"avatar_is_custom\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5ae9596b-755e-4a3e-8d0d-7cd1757e489d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fe034b62-4753-4db7-8d9f-c668fcec8854","name":"List Contact Methods","request":{"name":"List Contact Methods","description":{"content":"List all contact methods for a contact.\n\nReturns all external identifiers (phone numbers, emails, platform IDs)\nassociated with this contact, optionally filtered by method type.\n\nBy default, **technical** method types (``LIVE_CHAT`` — the per-device\nvisitor cookie UUID used for fast returning-visitor lookup and flow\nengine channel resolution) are EXCLUDED from the response so the\ncontact-detail UI doesn't show implementation-detail rows. Pass\n``include_technical=true`` to surface them. An explicit\n``method_type=live_chat`` filter overrides this and always returns the\nmatching rows.\n\n**Required Scopes:** `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","methods"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"method_type","value":"string","description":"Filter by method type (phone, email, whatsapp_id, whatsapp_bsuid, telegram_id, messenger_id, instagram_id)"},{"disabled":false,"key":"include_technical","value":"false","description":"Include technical/internal method types in the response. Defaults to false — LIVE_CHAT (per-device visitor cookie UUID) and any future 'technical' types are hidden from the contact detail UI by default. Set true to include them (e.g. for admin tooling or debugging)."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4424faf8-798b-4bf8-8192-1189f2eacec8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods"],"host":["{{baseUrl}}"],"query":[{"key":"method_type","value":"string"},{"key":"include_technical","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"contact_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"method_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"value\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"display_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"phone_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_primary\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bounce_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_bounce_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_used_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_source\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"contact_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"method_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"value\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channel_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"display_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"phone_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_primary\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bounce_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_bounce_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_used_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_source\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"eede756a-b7fd-4135-91d4-7944a48196fc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods"],"host":["{{baseUrl}}"],"query":[{"key":"method_type","value":"string"},{"key":"include_technical","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5db8672c-501b-41f8-9eb3-51e0ea6bab09","name":"Create Contact Method","request":{"name":"Create Contact Method","description":{"content":"Add a new contact method to a contact.\n\nCreates a new external identifier (phone, email, platform ID) linked to\nthis contact. For page-scoped types (messenger_id, instagram_id),\na channel_id is required.\n\nIf the proposed method's `(method_type, value, channel_id)` already\nbelongs to a *different* contact, this endpoint NEVER silently merges.\nInstead it returns HTTP 409 with a machine-readable\n`detail: \"duplicate_contact_method\"` body so the frontend can prompt the\nuser to either merge the two contacts or open the other contact.\n\nThis is true REGARDLESS of the tenant's `duplicate_contact_mode` default\n(including `auto_merge`): an interactive method-add must never swallow an\nunrelated contact. To actually merge, the client must make an explicit,\nuser-confirmed call to `POST /contacts/{contact_id}/merge` (which carries\nits own `contacts:update` scope check and uses oldest-wins semantics).\n\nThe optional per-request `duplicate_mode` body field still tunes the\nresponse shape on conflict, but none of the modes auto-merge here:\n\n- `allow_duplicates`: returns the existing method on the OTHER contact\n  unchanged (the unique constraint prevents duplicate ownership).\n- `dont_allow_duplicates` / `auto_merge` (default) / omitted: returns the\n  409 `duplicate_contact_method` conflict described above.\n\nAdding a method that already exists on the SAME contact is idempotent.\n\n`verified: true` marks the identifier as verified (`verified_source`\n`api`); on an existing method of this contact it upgrades it. Not allowed\nfor OAuth apps (403 `verification_not_allowed`).\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","methods"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"channel_id\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"verified\": false,\n  \"duplicate_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"63133585-44f5-437d-bab3-cc405d2057f6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"channel_id\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"verified\": false,\n  \"duplicate_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"contact_id\": \"string\",\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"channel_id\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"email_status\": \"string\",\n  \"bounce_count\": 0,\n  \"last_bounce_at\": \"1978-09-11T01:36:27.178Z\",\n  \"last_used_at\": \"1963-09-23T16:06:06.571Z\",\n  \"created_at\": \"2012-06-05T07:15:18.652Z\",\n  \"verified\": false,\n  \"verified_at\": \"1970-08-05T16:04:45.677Z\",\n  \"verified_source\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c259eee9-8f27-41cb-9721-bad926b06e8f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"channel_id\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"verified\": false,\n  \"duplicate_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"26bdba59-edec-4c88-8c74-841799a44a3c","name":"Update Contact Method","request":{"name":"Update Contact Method","description":{"content":"Update a contact method (value, display_name, is_primary, verified).\n\n`verified: true` marks the identifier as verified (`verified_source`\n`api`), `false` clears it; omit it to keep the current state. Changing\n`value` without `verified: true` resets the method to unverified (a new\nvalue is a new claim). Changing `verified` is not allowed for OAuth apps\n(403 `verification_not_allowed`).\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"verified\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1b23b76f-4e01-428b-9854-74ab37269629","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"verified\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"contact_id\": \"string\",\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"channel_id\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"email_status\": \"string\",\n  \"bounce_count\": 0,\n  \"last_bounce_at\": \"1978-09-11T01:36:27.178Z\",\n  \"last_used_at\": \"1963-09-23T16:06:06.571Z\",\n  \"created_at\": \"2012-06-05T07:15:18.652Z\",\n  \"verified\": false,\n  \"verified_at\": \"1970-08-05T16:04:45.677Z\",\n  \"verified_source\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"55e70554-ad8c-4d04-8287-4747c4cc49bc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"verified\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b23a49c5-a499-463f-ae1a-cf77bb8f6e52","name":"Delete Contact Method","request":{"name":"Delete Contact Method","description":{"content":"Delete a contact method.\n\nIf the deleted method was primary, the next oldest method of the same type\nis automatically promoted. Denormalized fields (phone, email) on the contact\nare updated accordingly.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"83c58cb3-65bf-4cb1-b75d-22292fc78e49","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"56d3f41c-8d7c-437b-9523-d33bfeef8bf1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"821702ee-5fdc-458d-89a7-08dc7b106195","name":"Update Contact Method Verification","request":{"name":"Update Contact Method Verification","description":{"content":"Mark a contact method as verified or unverified.\n\nVerified identifiers are trusted by AI agents and by automatic duplicate\nhandling; unverified ones are treated as claims. Sets\n`verified_source` to `manual` and records who changed it. Marking a\nmethod verified also confirms any pending \"typed by a live chat visitor\"\nrecord for that identifier. Unmarking keeps that history.\n\nNot available to OAuth apps or embedded views (403\n`verification_not_allowed`).\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id","verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"verified\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"fd5856bf-688b-4cbd-bfa0-bbfcf346a58c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id","verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"verified\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"contact_id\": \"string\",\n  \"method_type\": \"string\",\n  \"value\": \"string\",\n  \"channel_id\": \"string\",\n  \"display_name\": \"string\",\n  \"phone_type\": \"string\",\n  \"is_primary\": false,\n  \"email_status\": \"string\",\n  \"bounce_count\": 0,\n  \"last_bounce_at\": \"1978-09-11T01:36:27.178Z\",\n  \"last_used_at\": \"1963-09-23T16:06:06.571Z\",\n  \"created_at\": \"2012-06-05T07:15:18.652Z\",\n  \"verified\": false,\n  \"verified_at\": \"1970-08-05T16:04:45.677Z\",\n  \"verified_source\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cb115810-7f93-4a88-849c-1a442ea14985","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","methods",":method_id","verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"method_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"verified\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9369e117-23d2-4adb-82d4-35969c08a67a","name":"List Contact History","request":{"name":"List Contact History","description":{"content":"Unified timeline of conversations, flow runs, flow-sent messages,\nscheduled sends, all messages, and AI ticket summaries for a single\ncontact.\n\nPowers the contact-detail \"History\" card (Activity + Messages view\nmodes). Returns a single keyset-paginated, time-descending stream\nmerged from multiple SHARD tables — see\n:class:`app.services.contact_history_service.ContactHistoryService`\nfor the per-source query strategy and batch lookups.\n\nEvent types:\n\n* ``conversation`` — one row per conversation (Activity mode).\n* ``flow_run``     — one row per flow run (Activity mode).\n* ``flow_message`` — flow-attributed messages only (legacy).\n* ``message``      — every message for the contact regardless of\n  flow attribution (Messages mode).\n* ``scheduler``    — pending or fired scheduled sends (reminders,\n  recurring sends, segment-blast materializations).\n* ``ticket_summary`` — AI conversation summaries persisted as editable\n  KB documents (``knowledge_base_documents`` filtered by the indexed\n  ``contact_id`` column, ``document_type='ticket_summary'``). The\n  ``document_id`` deep-links to the KB editor / raw GET-PUT endpoints.\n\n**Required Scopes:** `contacts:read` AND `flows:read` AND `conversations:read` AND `scheduler:read` AND `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","history"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"types","value":"string","description":"Filter by event_type. Repeatable. Allowed values: `conversation`, `flow_run`, `flow_message`, `message`, `scheduler`, `ticket_summary`. Omit to include all known types (current FE behavior). Use `message` for the flat all-messages stream that powers the Messages view mode; use `scheduler` for pending/fired scheduled sends; use `ticket_summary` for the contact's AI conversation summaries (editable KB documents)."},{"disabled":false,"key":"types","value":"string","description":"Filter by event_type. Repeatable. Allowed values: `conversation`, `flow_run`, `flow_message`, `message`, `scheduler`, `ticket_summary`. Omit to include all known types (current FE behavior). Use `message` for the flat all-messages stream that powers the Messages view mode; use `scheduler` for pending/fired scheduled sends; use `ticket_summary` for the contact's AI conversation summaries (editable KB documents)."},{"disabled":false,"key":"date_from","value":"string","description":"ISO8601 lower bound on each source's sort column."},{"disabled":false,"key":"date_to","value":"string","description":"ISO8601 upper bound on each source's sort column."},{"disabled":false,"key":"q","value":"string","description":"Substring filter (LIKE %q%). Ignored when shorter than 2 chars. Matches conversation.subject + last message text, flow.name, and message.text depending on the event_type."},{"disabled":false,"key":"cursor","value":"string","description":"Opaque cursor from a previous page's `next_cursor`."},{"disabled":false,"key":"page_size","value":"50","description":"Page size (default 50, max 100)."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a898e28a-0b1c-48cf-b214-0e79d41582eb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","history"],"host":["{{baseUrl}}"],"query":[{"key":"types","value":"string"},{"key":"types","value":"string"},{"key":"date_from","value":"string"},{"key":"date_to","value":"string"},{"key":"q","value":"string"},{"key":"cursor","value":"string"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"next_cursor\": \"string\",\n  \"has_more\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ce04f4ed-ca19-47dc-a87c-8d178baf9d6a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","history"],"host":["{{baseUrl}}"],"query":[{"key":"types","value":"string"},{"key":"types","value":"string"},{"key":"date_from","value":"string"},{"key":"date_to","value":"string"},{"key":"q","value":"string"},{"key":"cursor","value":"string"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6ebb1b9d-51fa-4a70-b768-b63cbb4755ed","name":"List Contact Attachments","request":{"name":"List Contact Attachments","description":{"content":"Keyset-paginated, newest-first list of ALL media exchanged with a contact\nacross every one of their conversations.\n\nPowers the WhatsApp-profile-style media gallery on the contact-detail page.\nCovers every media category — images, video, audio, voice notes, AND\ndocuments/files (nothing is filtered out). Each item carries a short-lived\n(60 min) signed VIEW url into the private media bucket plus, when available,\na signed thumbnail url — never raw bucket urls.\n\nSources: a message's primary attachment, interactive/template header\nmedia, and email file attachments (`source=\"email\"`, one item per file,\n`message_id` = the email's message). Inline email images (signature logos,\n`cid:` parts) are never listed; emails received/sent before email files\nwere linked to generic attachments are not shown. Every item carries\n`source` (`message` | `email`).\n\nPagination is keyed on MESSAGES, ordered DESC by `(created_at,\nmessage_id)`: `page_size` bounds the messages per page, so `len(items)`\nmay exceed `page_size` when an email carries several files (all files of\none email always arrive on the same page). `next_cursor` is the opaque\ncursor of the last returned message when `has_more` is true.\n\nVisibility & tenancy: every query is filtered by `tenant_id`; the contact\nmust belong to the tenant (404 otherwise).\n\n**Required Scopes:** `contacts:read` AND `messages:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","attachments"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"cursor","value":"string","description":"Opaque cursor from a previous page's `next_cursor`"},{"disabled":false,"key":"page_size","value":"30","description":"Page size (default 30, max 100)"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7b18f106-ab8e-4340-8300-da23a91b026e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","attachments"],"host":["{{baseUrl}}"],"query":[{"key":"cursor","value":"string"},{"key":"page_size","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"next_cursor\": \"string\",\n  \"has_more\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4cafd0bf-d52a-40c1-9ae5-8d53eb355c86","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","attachments"],"host":["{{baseUrl}}"],"query":[{"key":"cursor","value":"string"},{"key":"page_size","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"16817e81-da7c-4966-8345-12ca7f8282c7","name":"List Contact Channel Messages","request":{"name":"List Contact Channel Messages","description":{"content":"Keyset-paginated stream of a contact's messages on a SINGLE channel,\ndrawn from PRIOR conversations only.\n\nReturns this contact's messages on `channel_id` from conversations OTHER\nthan `before_conversation_id` whose parent conversation was created BEFORE\nthe `before_conversation_id` conversation (i.e. earlier threads on the same\nchannel). Newest-first, keyset-paginated on `(created_at, id)`.\n\nReuses the standard `MessageResponse` item shape (each item carries its own\n`conversation_id`) so the frontend renders these with the existing message\nbubble — no new bubble type is needed.\n\nVisibility & tenancy: the contact must belong to the tenant (404 otherwise);\n`before_conversation_id` must belong to the tenant AND this contact AND this\n`channel_id` (404 otherwise); and the requested `channel_id` must be visible\nto the caller via contact-history visibility (404 otherwise).\n\n**Required Scopes:** `contacts:read` AND `messages:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","messages"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"(Required) Channel to scope the timeline to"},{"disabled":false,"key":"before_conversation_id","value":"string","description":"(Required) The currently-open conversation; only PRIOR conversations are included"},{"disabled":false,"key":"cursor","value":"string","description":"Opaque cursor from a previous page's `next_cursor`"},{"disabled":false,"key":"page_size","value":"5","description":"Page size (default 5, max 50)"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2de468a8-72f3-44d6-b90f-1af80ecb1fc7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","messages"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"before_conversation_id","value":"string"},{"key":"cursor","value":"string"},{"key":"page_size","value":"5"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"next_cursor\": \"string\",\n  \"has_more\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"222dbcd6-7616-4369-bb71-41f51a7ea348","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","messages"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"before_conversation_id","value":"string"},{"key":"cursor","value":"string"},{"key":"page_size","value":"5"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5cd61f94-fe7e-4cd8-adfa-9558216ea521","name":"List Conversation Contact Merge Suggestions","request":{"name":"List Conversation Contact Merge Suggestions","description":{"content":"List pending contact merge suggestions for a conversation's contact.\n\n**Required Scopes:** `conversations:read`\n\nA suggestion is created when a live chat visitor enters an email address\nor phone number (or the website passes a contact ID) that matches an\nexisting contact. The conversation is never linked to that contact\nautomatically: confirm the suggestion to merge the visitor into the\nexisting contact, or dismiss it to keep them separate.\n\n`matched_value` is what the visitor entered and is not verified.\n\nSuggestions are listed on both sides: in the visitor's conversations and in\nevery conversation of the matched contact. `perspective` says which side\nthis conversation's contact is on (`source` = the visitor, `target` = the\nmatched contact). Confirming or dismissing from either side resolves the\nsuggestion for both.\n\nOn the matched contact's side, `conversation_id` and `source_contact` are\nnull when you cannot open the visitor's conversation (for example because\nof your inbox access). You can still confirm or dismiss the suggestion.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","contact-merge-suggestions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"79a6718c-176c-4997-b944-0094abbc4806","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","contact-merge-suggestions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e2bc76ef-eca2-41e7-abfd-a36b3992b0e6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","contact-merge-suggestions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b080b20e-a72d-4fd3-b36f-f04980d0e8b5","name":"Confirm Contact Merge Suggestion","request":{"name":"Confirm Contact Merge Suggestion","description":{"content":"Confirm a contact merge suggestion: merge the visitor contact into the matched contact.\n\n**Required Scopes:** `contacts:update`\n\nThe request body must be `{\"confirmed\": true}`; anything else returns 422.\nThe unverified contact (`source_contact`) is merged into the existing\ncontact (`target_contact`), exactly like `POST /contacts/{contact_id}/merge`:\nconversations, messages, notes, tags and contact methods move to the\nsurviving contact. This cannot be undone.\n\nReturns 404 when the suggestion does not exist and 409 with\n`error_code: suggestion_not_pending` when it was already confirmed or\ndismissed. `conversation_id` and `source_contact` are null in the response\nwhen you cannot open the visitor's conversation.","type":"text/plain"},"url":{"path":["api","v1","contact-merge-suggestions",":suggestion_id","confirm"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"confirmed\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9fa3fa0f-e9d5-447f-9781-02921267b75b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contact-merge-suggestions",":suggestion_id","confirm"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"confirmed\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"origin\": \"string\",\n  \"created_at\": \"string\",\n  \"matched_method_type\": \"string\",\n  \"matched_value\": \"string\",\n  \"conversation_id\": \"string\",\n  \"resolved_at\": \"string\",\n  \"resolved_by_user_id\": \"string\",\n  \"verified\": false,\n  \"source_contact\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_contact\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"survivor_contact_id\": \"string\",\n  \"perspective\": \"source\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f8aaeb6e-e971-4a3e-8243-92aa0692abbf","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contact-merge-suggestions",":suggestion_id","confirm"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"confirmed\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dfd6c177-1df3-45ef-9a0e-dd348c8289e4","name":"Dismiss Contact Merge Suggestion","request":{"name":"Dismiss Contact Merge Suggestion","description":{"content":"Dismiss a contact merge suggestion and keep both contacts separate.\n\n**Required Scopes:** `contacts:update`\n\nA dismissed pair is not suggested again. Returns 404 when the suggestion\ndoes not exist and 409 with `error_code: suggestion_not_pending` when it\nwas already confirmed or dismissed. `conversation_id` and `source_contact`\nare null in the response when you cannot open the visitor's conversation.","type":"text/plain"},"url":{"path":["api","v1","contact-merge-suggestions",":suggestion_id","dismiss"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"4b4985d0-bc8f-4213-a649-4ac7e139ba25","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contact-merge-suggestions",":suggestion_id","dismiss"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"origin\": \"string\",\n  \"created_at\": \"string\",\n  \"matched_method_type\": \"string\",\n  \"matched_value\": \"string\",\n  \"conversation_id\": \"string\",\n  \"resolved_at\": \"string\",\n  \"resolved_by_user_id\": \"string\",\n  \"verified\": false,\n  \"source_contact\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_contact\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"survivor_contact_id\": \"string\",\n  \"perspective\": \"source\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1ee03299-e0fd-48d3-bf9f-0cb389818aa4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contact-merge-suggestions",":suggestion_id","dismiss"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"suggestion_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"8659e76e-c990-4ce1-87f5-8f3a8871bf6a","name":"Conversations","description":{"content":"Manage customer conversations across all channels. Assign agents, close/reopen, and track conversation state.","type":"text/plain"},"item":[{"id":"9d14ffb7-c972-4d2b-bf6f-a42d91d47eb5","name":"Create Conversation","request":{"name":"Create Conversation","description":{"content":"Create a new conversation\n\n**Required Scopes:** `conversations:create`","type":"text/plain"},"url":{"path":["api","v1","conversations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"ch1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"contact_id\": \"c1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"contact_method_id\": \"cm1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"subject\": \"Support request\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a7aeffa3-d1d8-4767-b68b-1728add815a0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"ch1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"contact_id\": \"c1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"contact_method_id\": \"cm1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"subject\": \"Support request\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8a9d0743-764f-482b-b90a-909c02fe6e08","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"ch1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"contact_id\": \"c1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"contact_method_id\": \"cm1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"subject\": \"Support request\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"34315765-2874-4acd-a4c9-3d23bb14a8c2","name":"List Conversations","request":{"name":"List Conversations","description":{"content":"List all conversations for the tenant with pagination.\n\n**Required Scopes:** `conversations:read`\n\nRespects multi-agent mode setting:\n- Multi-agent mode: Shows all conversations\n- Single-agent mode: Shows only assigned + unassigned (agents only)\n\n**Response format:**\n```json\n{\n    \"items\": [...],\n    \"pagination\": {\n        \"total\": 150,\n        \"page\": 1,\n        \"page_size\": 20,\n        \"total_pages\": 8,\n        \"has_next\": true,\n        \"has_prev\": false\n    }\n}\n```\n\nQuery parameters:\n- page: Page number (1-indexed, default: 1)\n- page_size: Items per page (1-100, default: 20)\n- status: Filter by conversation status (open, closed)\n- assigned_to: Filter by assignment (\"me\", \"unassigned\", or specific user_id)\n- needs_reply: Filter for conversations needing a reply (true/false)\n- filter: Alias for common filters (\"unanswered\" = needs_reply=true)\n- contact_id: Filter by specific contact ID\n- search: Search by contact name, phone, email, or conversation subject;\n  plus message text (last 90 days, terms of 3+ characters) when the\n  `message_search` feature is enabled for the workspace\n- channel_type: Filter by channel type (whatsapp, telegram, sms, email, messenger, instagram, live_chat)\n- tag_id: Repeatable tag id; matches a tag on the conversation OR its\n  contact. Unknown / other-workspace ids -> 422\n- tag_mode: `any` (default) or `all` — how several `tag_id` values combine","type":"text/plain"},"url":{"path":["api","v1","conversations"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"status","value":"string","description":"Filter by tab/status: 'open' (excludes snoozed), 'snoozed', 'closed'"},{"disabled":false,"key":"assigned_to","value":"string","description":"Filter by assignment: 'me', 'unassigned', 'me_and_unassigned', or user_id"},{"disabled":false,"key":"needs_reply","value":"true","description":"Filter for conversations needing a reply"},{"disabled":false,"key":"filter","value":"string","description":"Alias: 'unanswered' sets needs_reply=True"},{"disabled":false,"key":"contact_id","value":"string","description":"Filter by contact ID"},{"disabled":false,"key":"search","value":"string","description":"Search by contact name, phone, email, or subject. When the `message_search` feature is enabled for the workspace (see GET /tenants/features) and the term has at least 3 characters, message text from the last 90 days is searched too (OR)."},{"disabled":false,"key":"inbox_id","value":"string","description":"Filter to conversations in this custom inbox"},{"disabled":false,"key":"channel_type","value":"string","description":"Filter by channel type (e.g. whatsapp, telegram, sms, email, messenger, instagram, live_chat)"},{"disabled":false,"key":"tag_id","value":"string","description":"tags.id — filter to conversations carrying the tag on the conversation OR on its contact. Repeatable (?tag_id=a&tag_id=b, max 20); combine with `tag_mode`. Each id must belong to the workspace (422 if not). AND-ed with all other filters."},{"disabled":false,"key":"tag_id","value":"string","description":"tags.id — filter to conversations carrying the tag on the conversation OR on its contact. Repeatable (?tag_id=a&tag_id=b, max 20); combine with `tag_mode`. Each id must belong to the workspace (422 if not). AND-ed with all other filters."},{"disabled":false,"key":"tag_mode","value":"any","description":"How several `tag_id` values combine: `any` (default) = at least one of the tags, `all` = every tag."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a36b1af7-1258-475d-947e-ee152e7f54b5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"status","value":"string"},{"key":"assigned_to","value":"string"},{"key":"needs_reply","value":"true"},{"key":"filter","value":"string"},{"key":"contact_id","value":"string"},{"key":"search","value":"string"},{"key":"inbox_id","value":"string"},{"key":"channel_type","value":"string"},{"key":"tag_id","value":"string"},{"key":"tag_id","value":"string"},{"key":"tag_mode","value":"any"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6a58b459-0d3d-48d9-8f0b-430089bbef2a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"status","value":"string"},{"key":"assigned_to","value":"string"},{"key":"needs_reply","value":"true"},{"key":"filter","value":"string"},{"key":"contact_id","value":"string"},{"key":"search","value":"string"},{"key":"inbox_id","value":"string"},{"key":"channel_type","value":"string"},{"key":"tag_id","value":"string"},{"key":"tag_id","value":"string"},{"key":"tag_mode","value":"any"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b4cca403-8f32-49b2-9de9-6b8f20819c92","name":"Bulk Close Conversations","request":{"name":"Bulk Close Conversations","description":{"content":"Bulk close multiple conversations without triggering ticket summarization.\n\nThis endpoint is intended for closing spam, duplicates, or other conversations\nthat do not need AI summarization or knowledge base entries.\n\n**Required Scopes:** `conversations:update`\n\nArgs:\n    request_body: Request body containing conversation_ids and optional reason\n\nReturns:\n    BulkCloseResponse with counts of successes and failures","type":"text/plain"},"url":{"path":["api","v1","conversations","bulk-close"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_ids\": [\n    \"string\"\n  ],\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8e818169-204f-43f6-9707-f9b1c9f23691","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations","bulk-close"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_ids\": [\n    \"string\"\n  ],\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"failed_count\": 2,\n  \"failed_ids\": [\n    \"c1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n    \"d2b3c4d5-e6f7-g8h9-i0j1-k2l3m4n5o6p7\"\n  ],\n  \"success_count\": 8\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8c23eb89-dcae-449f-930c-57328809336b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations","bulk-close"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_ids\": [\n    \"string\"\n  ],\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8d6fbf11-ea35-42b0-b04b-50ed4cb4b67e","name":"Get Trending Tags","request":{"name":"Get Trending Tags","description":{"content":"Get trending AI tags from recently closed conversations.\n\nAnalyzes the most recent closed conversations with AI summaries and returns\nthe most common tags/categories.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations","analytics","trending-tags"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"100","description":"Number of recent closed conversations to analyze"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"56f1ec57-afa0-4000-9bd5-8451ead396bc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations","analytics","trending-tags"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d5bf0551-aab0-4f76-9567-4c0fdab2430b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations","analytics","trending-tags"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6e7c43cf-238f-4e38-817a-6bd11cf217bb","name":"Search Similar Conversations","request":{"name":"Search Similar Conversations","description":{"content":"**Retired.** Always returns `410 Gone`.\n\nSimilar ticket search was retired in October 2026. Conversation summaries\nare still stored on each conversation; list them with\n`GET /api/v1/knowledge-base/tickets`.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations","search-similar"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c04a8ac4-3db0-4ded-860c-adae92d7701e","name":"Get Conversation","request":{"name":"Get Conversation","description":{"content":"Get a specific conversation\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ceb7d4af-43d9-4436-ba2b-f46af6f117dd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6eb56524-b9dc-4d94-a62b-0096456751d4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"97ac662d-f50a-4a00-91ff-055ded095e6b","name":"Update Conversation","request":{"name":"Update Conversation","description":{"content":"Update a conversation\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"assigned_user_id\": \"u1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"status\": \"assigned\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"af71f2d5-523b-43b0-8c35-3c910342e258","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"assigned_user_id\": \"u1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"status\": \"assigned\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d77542b7-cd41-47ba-8c0e-dc0e4981f56d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"assigned_user_id\": \"u1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6\",\n  \"status\": \"assigned\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0121fbac-60af-4b4f-8da3-781a6cc293d2","name":"Assign Conversation","request":{"name":"Assign Conversation","description":{"content":"Assign a conversation to a user\n\n**Required Scopes:** `conversations:update`\n\nCross-agent rules (when allow_messaging_other_agents_conversations is False):\n- Self-assign (\"Assign to me\"): Always allowed for any agent\n- Reassign to someone else: Only ADMIN/OWNER roles","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","assign",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"bfdead20-3036-49a1-846e-e73f36d497d9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","assign",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e35f498a-d511-488d-89ce-7c66dbc156e1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","assign",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4a69ef70-faa9-4936-af39-1e18b2abecf0","name":"Close Conversation","request":{"name":"Close Conversation","description":{"content":"Close a conversation and create a ticket\n\n**Required Scopes:** `conversations:update`\n\nCross-agent rules (when allow_messaging_other_agents_conversations is False):\n- Only ADMIN/OWNER can close a conversation assigned to another agent\n\nArgs:\n    conversation_id: ID of the conversation to close\n    request_body: Request body containing optional notes and summarize flag","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","close"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"notes\": \"Customer issue resolved\",\n  \"summarize\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9493c18b-0a7b-4011-96fb-bded80d41a97","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","close"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"notes\": \"Customer issue resolved\",\n  \"summarize\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"566167f7-5150-467b-9175-65e5c606f8ff","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","close"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"notes\": \"Customer issue resolved\",\n  \"summarize\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c5a09fdf-437a-4b6d-839e-f7fa425b39a4","name":"Show or clear a typing indicator","request":{"name":"Show or clear a typing indicator","description":{"content":"Show (or clear) a typing indicator to the contact in a conversation.\n\nUse it while a reply is being prepared, e.g. by your own bot. The body is\noptional; an empty body means `{\"state\": \"on\"}`.\n\n## Channel behavior\n- **WhatsApp:** the indicator also marks the contact's latest message as\n  read (`implied_read: true`) and lasts up to 25 seconds or until you\n  reply. `state: \"off\"` is accepted but has no effect.\n- **Telegram:** lasts about 5 seconds; call again to keep it visible.\n- Check `GET /channels/sender-actions` for every channel's support and\n  timeout (`typing_ttl_seconds`). Unsupported channels return\n  `422 sender_action_not_supported`.\n\n`message_id` (optional) ties the indicator to a specific inbound message\nof this conversation; channels that need one use the latest inbound\nmessage when omitted (`422 no_inbound_message` if there is none).\n\nThis is **not a message**: nothing is billed, no message is created and\nno webhook is sent. Your inbox's unread state is not changed.\n\n## Errors\n`detail` is an object: `{\"code\", \"message\", \"channel_type\", \"action\"}`.\n- `404 conversation_not_found`, `message_not_found`\n- `422 sender_action_not_supported`, `no_inbound_message`,\n  `message_not_inbound`, `channel_unavailable`\n- `429 sender_action_rate_limited` — about 30 calls per minute per\n  conversation; retry after the `Retry-After` seconds\n- `502 sender_action_failed` — the messaging platform rejected the request\n\nRepeats are absorbed: a second read receipt for the same message, or a\ntyping `on` while the indicator is still showing, returns 200 with\n`deduplicated: true` and nothing is sent again (typing `off` is never\ndeduplicated).\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","typing"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"state\": \"on\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"16dc597f-f68a-4597-a1e8-b14b9cd294cc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","typing"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"state\": \"on\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"action\": \"typing\",\n  \"channel_type\": \"whatsapp\",\n  \"conversation_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n  \"deduplicated\": false,\n  \"expires_in_seconds\": 25,\n  \"implied_read\": true,\n  \"message_id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"state\": \"on\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c8adf2c0-7c33-46c0-aad9-f1676de1720f","name":"Message or conversation not found.","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","typing"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"state\": \"on\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1f51ad09-d640-4011-bf2a-f4f8d8c7284b","name":"Not possible on this channel or message: `sender_action_not_supported`, `message_not_inbound`, `no_inbound_message`, `channel_unavailable` (or a request validation error).","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","typing"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"state\": \"on\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"eb8d9eda-4d3c-42d1-b145-d4989dccb487","name":"Too many read/typing requests for this conversation (`sender_action_rate_limited`, about 30 per minute). Honour `Retry-After`.","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","typing"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"state\": \"on\"\n}","options":{"raw":{"language":"json"}}}},"status":"Too Many Requests","code":429,"header":[{"disabled":false,"description":"Seconds to wait before retrying.","key":"Retry-After","value":"4595"},{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"43a0debf-76ad-4bd2-9ae1-eea3b386d475","name":"The messaging platform rejected the action (`sender_action_failed`).","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","typing"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"state\": \"on\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"56c6574b-4c05-401c-9b87-465932730ed2","name":"Snooze Conversation","request":{"name":"Snooze Conversation","description":{"content":"Snooze (postpone) a conversation.\n\n**Required Scopes:** `conversations:update`\n\nSnooze is a DERIVED state: the conversation ``status`` stays ``open`` /\n``assigned`` — it simply drops off the **Open** tab and appears on the\n**Snoozed** tab until ``snoozed_until`` passes (query-time expiry, no\nbackground job). Once the timestamp passes it behaves like a normal open\nconversation again.\n\nBody:\n- ``snoozed_until``: timezone-aware ISO datetime; MUST be in the future.\n- ``reopen_on_message``: when true the inbound-message worker clears the\n  snooze (returns it to Open) when a customer message arrives.\n\nEmits the ``conversation.updated`` webhook event and a\n``conversation_updated`` WebSocket broadcast so the UI moves the\nconversation to the Snoozed tab in real time.\n\nCross-agent rules (when allow_messaging_other_agents_conversations is\nFalse): only ADMIN/OWNER may snooze a conversation assigned to another\nagent.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","snooze"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reopen_on_message\": true,\n  \"snoozed_until\": \"2026-06-23T09:00:00Z\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6fcc78db-4960-47b4-b1b9-7e10c1fc7050","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","snooze"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reopen_on_message\": true,\n  \"snoozed_until\": \"2026-06-23T09:00:00Z\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"81a105fc-7c3e-453f-980d-d12e6e1eab86","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","snooze"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reopen_on_message\": true,\n  \"snoozed_until\": \"2026-06-23T09:00:00Z\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"383c633d-3d1f-4808-878d-cd337f26dfbf","name":"Unsnooze Conversation","request":{"name":"Unsnooze Conversation","description":{"content":"Clear a conversation's snooze (return it to the Open tab).\n\n**Required Scopes:** `conversations:update`\n\nSets ``snoozed_until`` and ``snooze_reopen_on_message`` back to NULL.\nStatus is untouched. Idempotent — unsnoozing an already-unsnoozed\nconversation succeeds and still emits ``conversation.updated`` so stale\nclient state converges.\n\nCross-agent rules (when allow_messaging_other_agents_conversations is\nFalse): only ADMIN/OWNER may unsnooze a conversation assigned to another\nagent.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","snooze"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"60f1c8b1-8a08-490c-95b5-f81173118c79","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","snooze"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8b383d05-543f-412c-a9ea-5a18b3271309","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","snooze"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ac737af3-98e3-4b43-85fd-808da85f5ce2","name":"Summarize Conversation","request":{"name":"Summarize Conversation","description":{"content":"Manually trigger AI summary generation for a conversation.\n\n**Required Scopes:** `conversations:update` (+ plan feature `ai_features`)","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","summarize"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"ce4492b0-4e70-4cf5-a09e-a62e1c84bd76","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","summarize"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"17aa6653-8e6b-468f-8344-f94440bde148","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","summarize"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a7d306a4-8c10-4394-9652-0fda01fa1621","name":"Create Transcript Export","request":{"name":"Create Transcript Export","description":{"content":"Start an async transcript export (PDF or ZIP) for a conversation.\n\n**Required Scopes:** `conversations:read`\n\nCreates a background job and returns it immediately with status ``queued``\n(HTTP 202). Poll ``GET /conversations/{conversation_id}/transcript/{job_id}``\nuntil ``status`` is ``completed`` (a ``download_url`` is then returned) or\n``failed``.\n\nDeduplication: a double-click / concurrent request is collapsed via a Redis\n``SET NX EX`` lock, and a reload / fresh-completed request reuses the\nexisting job (an in-flight QUEUED/PROCESSING job, or a COMPLETED one from the\nlast few minutes) instead of enqueuing a duplicate.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","transcript"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"format\": \"pdf\",\n  \"wait_for_summary\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1b0c1408-c2d8-4ebd-b316-6d7c183cc135","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","transcript"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"format\": \"pdf\",\n  \"wait_for_summary\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"completed_at\": \"2026-07-02T10:00:12Z\",\n  \"conversation_id\": \"conv_abc123\",\n  \"created_at\": \"2026-07-02T10:00:00Z\",\n  \"download_url\": \"https://storage.googleapis.com/...signed...\",\n  \"format\": \"pdf\",\n  \"job_id\": \"3f9a1c2e-...\",\n  \"message\": \"Transcript export ready\",\n  \"progress_percent\": 100,\n  \"status\": \"completed\",\n  \"storage_path\": \"tenants/t1/transcripts/conv_abc123.pdf\",\n  \"updated_at\": \"2026-07-02T10:00:12Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"18b0f56d-1cdf-4758-88a1-7e4892bdf0c2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","transcript"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"format\": \"pdf\",\n  \"wait_for_summary\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c4fa95d7-5240-424d-bdf5-d5acf4b8ecf6","name":"Get Transcript Export","request":{"name":"Get Transcript Export","description":{"content":"Poll the status of an async transcript export job.\n\n**Required Scopes:** `conversations:read`\n\nWhen ``status`` is ``completed`` the response includes the ``download_url``\n(and ``storage_path``) written by the worker; when ``failed`` see\n``error_message``.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","transcript",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"55c8c179-9236-4859-a9dd-88300d7071af","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","transcript",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"completed_at\": \"2026-07-02T10:00:12Z\",\n  \"conversation_id\": \"conv_abc123\",\n  \"created_at\": \"2026-07-02T10:00:00Z\",\n  \"download_url\": \"https://storage.googleapis.com/...signed...\",\n  \"format\": \"pdf\",\n  \"job_id\": \"3f9a1c2e-...\",\n  \"message\": \"Transcript export ready\",\n  \"progress_percent\": 100,\n  \"status\": \"completed\",\n  \"storage_path\": \"tenants/t1/transcripts/conv_abc123.pdf\",\n  \"updated_at\": \"2026-07-02T10:00:12Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"85c7902f-2ab2-4606-a9f1-a2a9b1b9469d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","transcript",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"74d21777-4fc1-4628-b10f-ad1f9d2d0fd0","name":"Email Conversation Transcript","request":{"name":"Email Conversation Transcript","description":{"content":"Email the conversation transcript to the contact (or any address).\n\n**Required Scopes:** `conversations:update`\n\nOffered when an agent closes a conversation (especially dead live-chat\ntickets where the visitor left before reading the replies), but callable\nfor ANY conversation. Sends SYNCHRONOUSLY in-request: one branded HTML\nemail (tenant logo/name header, localized greeting, optional agent note,\nthe chat transcript, and the tenant's imprint/compliance footer) from the\nselected ``EmailMailbox``.\n\nErrors: 404 unknown conversation/mailbox (tenant-scoped), 400 invalid\nemail address / mailbox not sendable, 409 ``CONTACT_BLOCKED`` (contact or\nrecipient address blocked), 422 request validation, 502 the email\nprovider rejected the send.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","email-transcript"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"mailbox_id\": \"6f2b9a44-1c7e-4b7f-9d1a-2e8c5a7b9c01\",\n  \"note\": \"Thanks for reaching out — here is everything we discussed.\",\n  \"save_as_contact_method\": true,\n  \"to_email\": \"customer@example.com\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1f1a77cf-df26-4dc5-b1c7-11c9b8c78d43","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","email-transcript"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"mailbox_id\": \"6f2b9a44-1c7e-4b7f-9d1a-2e8c5a7b9c01\",\n  \"note\": \"Thanks for reaching out — here is everything we discussed.\",\n  \"save_as_contact_method\": true,\n  \"to_email\": \"customer@example.com\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"to_email\": \"customer@example.com\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"20d676aa-a2f5-496b-8a0f-3cf90c589009","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","email-transcript"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"mailbox_id\": \"6f2b9a44-1c7e-4b7f-9d1a-2e8c5a7b9c01\",\n  \"note\": \"Thanks for reaching out — here is everything we discussed.\",\n  \"save_as_contact_method\": true,\n  \"to_email\": \"customer@example.com\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b4c5d565-3e94-4a8d-8168-83d93923dba3","name":"Get Conversation Summary","request":{"name":"Get Conversation Summary","description":{"content":"Full AI ticket summary for a single conversation, broken into the\nthree sections the contact-page timeline renders on expand:\n``user_intent``, ``summary``, ``resolution``.\n\nLazy-loaded by the FE when a ``ticket_summary`` timeline row is\nexpanded — the timeline list itself only carries a 140-char\n``summary_preview`` to keep the list payload small. Reads the text\ndirectly off the ``Conversation`` SHARD row (no KB-doc / RAG fetch).\n\nReturns 404 if the conversation does not exist in the caller's tenant\n(tenant-isolated — never leaks cross-tenant ids). A conversation that\nexists but was never summarized (or was reopened, which NULLs these\nfields) returns 200 with all three sections ``null``.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8e62183b-8bfa-4616-9f6f-64255cfd3a50","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"string\",\n  \"user_intent\": \"string\",\n  \"summary\": \"string\",\n  \"resolution\": \"string\",\n  \"summarized_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c2ead199-b6c4-4096-b3ac-a647f61214d3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a86ce857-beb1-42cf-9ec4-b5f9d415753b","name":"Get Previous Conversations","request":{"name":"Get Previous Conversations","description":{"content":"Summarize a contact's previous conversations + advertise the merge target.\n\nRedesigned (June 2026) to power a single-line history summary plus the\nreopen-&-merge affordance, instead of a list of heavy per-conversation\ncards. Returns CHEAP aggregates over the SAME contact's prior conversations\n(excluding the current one):\n\n  * `total_previous` — COUNT of prior conversations\n  * `distinct_channel_count` — COUNT(DISTINCT channel_id)\n  * `latest_previous_at` — MAX(last_message_at)\n  * `merge_target_conversation_id` — the ONLY conversation this one may be\n    merged into: the contact's OVERALL most-recent prior conversation, and\n    ONLY when that immediately-previous conversation is on the SAME channel\n    (`channel_id`) as the current one. Null when the immediately-previous\n    conversation overall is on a different channel (even if an older\n    same-channel prior exists). Computed by the SAME server-side helper the\n    `POST /{id}/merge` endpoint enforces with, so the FE can never advertise\n    a target the backend would reject.\n  * `mergeable` — `merge_target_conversation_id is not None`\n\n`items[]` is RETAINED in the response for backwards-compatibility but is\nnow ALWAYS returned EMPTY: the expensive per-item enrichment (bulk message\ncounts, last-message previews, channel-type hydration) is no longer\ncomputed. The only former consumer (`ConversationHistoryBoundary.tsx`) is\nbeing redesigned to use the aggregates. To list actual messages on a\nchannel, use `GET /api/v1/contacts/{contact_id}/messages`. The `limit`\nquery param is retained for compatibility but ignored.\n\nAll aggregates and the merge-target lookup respect contact-history\nvisibility: non-admin agents only see conversations on channels reachable\nthrough their accessible Custom Inboxes. Admins/owners see everything.\n\n**Required Scopes:** `conversations:read`\n\n**Response format:**\n```json\n{ \"items\": [], \"total_previous\": 4, \"distinct_channel_count\": 2,\n  \"latest_previous_at\": \"2026-06-01T10:00:00Z\", \"mergeable\": true,\n  \"merge_target_conversation_id\": \"...\" }\n```","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","previous"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"3","description":"Deprecated/ignored — items[] is no longer populated"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8bd8a579-1374-4029-bcdd-6433c3187acc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","previous"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"3"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"total_previous\": 0,\n  \"distinct_channel_count\": 0,\n  \"latest_previous_at\": \"string\",\n  \"mergeable\": false,\n  \"merge_target_conversation_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"39b6b169-6df6-4f12-8687-be30414bdb22","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","previous"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"3"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"012a7ad6-c18f-42b0-ac72-338d2a580874","name":"Reopen Conversation","request":{"name":"Reopen Conversation","description":{"content":"Reopen a closed conversation\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","reopen"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a18b6c83-1295-48bc-94e7-7962d2ae3603","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","reopen"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4ec12383-afe7-42f6-b873-a1969118031c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","reopen"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"05bf1b5c-b9d5-4128-bd92-3f2a6f4df2a9","name":"Merge Conversation","request":{"name":"Merge Conversation","description":{"content":"Merge a source conversation into this one and reopen it.\n\nThe path conversation (`conversation_id`) SURVIVES and is reopened; the\n`source_conversation_id` from the body is merged in (all its messages,\nnotes, tags, attachments, etc. move over) and then permanently deleted.\nBoth conversations must belong to the SAME contact.\n\nReply routing adopts the source conversation's active channel so future\nreplies go to where the contact last reached us.\n\nServer-side merge gating: the path conversation MUST be the single valid\nmerge target for the source — i.e. the contact's OVERALL most-recent PRIOR\nconversation, and ONLY when that immediately-previous conversation is on the\nSAME channel (`channel_id`) as the source. If the immediately-previous\nconversation overall is on a DIFFERENT channel (even when an older\nsame-channel prior exists), there is NO valid target. This is the exact\ntarget advertised by `GET /{id}/previous` (`merge_target_conversation_id`),\ncomputed by the SAME helper, so the two can never diverge.\n\nRejections:\n  * `400` — source == target (cannot merge into itself)\n  * `404` — either conversation missing/not in tenant, or a channel not\n    visible to the caller (contact-history visibility)\n  * `409` — conversations belong to different contacts, OR the path\n    conversation is not the valid merge target / no mergeable prior\n    conversation exists on this channel\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"source_conversation_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"cb7bce89-714b-4225-8314-d55bd58711fb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"source_conversation_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"status\": \"assigned\",\n  \"updated_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"active_contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"active_contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"assigned_user_id\": \"string\",\n  \"assigned_user\": {\n    \"key_0\": 3429\n  },\n  \"subject\": \"string\",\n  \"last_message_at\": \"string\",\n  \"last_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"contact\": {\n    \"key_0\": 8311\n  },\n  \"is_live_chat\": false,\n  \"is_email\": false,\n  \"needs_reply\": true,\n  \"last_customer_message_at\": \"string\",\n  \"last_agent_reply_at\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"live_chat_session_status\": \"string\",\n  \"live_chat_last_activity_at\": \"string\",\n  \"visitor_online\": false,\n  \"visitor_widget_state\": \"string\",\n  \"visitor_tab_state\": \"string\",\n  \"visitor_focused\": true,\n  \"visitor_last_visible_at\": \"string\",\n  \"visitor_last_focus_at\": \"string\",\n  \"bot_session_id\": \"string\",\n  \"active_flow_run\": {\n    \"key_0\": \"string\",\n    \"key_1\": 5535\n  },\n  \"snoozed_until\": \"string\",\n  \"snooze_reopen_on_message\": true,\n  \"closed_at\": \"string\",\n  \"closed_by_user_id\": \"string\",\n  \"ai_summary\": \"string\",\n  \"user_intent\": \"string\",\n  \"resolution_summary\": \"string\",\n  \"sentiment_analysis\": \"string\",\n  \"ai_tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"summarized_at\": \"string\",\n  \"my_draft\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f1fb7677-6917-47bf-9d51-134468ec09f7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"source_conversation_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a680c7a8-49aa-4382-8d74-99d5957d16c8","name":"Get Switchable Channels","request":{"name":"Get Switchable Channels","description":{"content":"List channels available for switching from this conversation.\n\nReturns all active switchable channels (WhatsApp, Telegram, Messenger,\nInstagram) excluding the conversation's current channel. Used by the\nfrontend to render a channel picker before generating deeplinks.\n\nCustom Inboxes security hardening (May 2026): for non-admin callers the\nlist is intersected with the channels reachable through the caller's\naccessible Custom Inboxes. Admins/owners and tenants with zero inboxes\nare unaffected.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","switchable-channels"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ea88da4d-ad80-48d4-8b3e-e18f0167498c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","switchable-channels"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"11a964ce-0a10-4e99-a2b2-5ddf6ff1f8a4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","switchable-channels"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2319f9d0-1481-4a0d-a04b-efadb0f98fcb","name":"Get Conversation Sender Options","request":{"name":"Get Conversation Sender Options","description":{"content":"List email senders the caller may use for replying to this conversation.\n\nReturns the user's accessible support-capable email connections, plus an\nACL-override entry when the conversation's default reply sender (the\nreceiving connection's ``outbound_provider``) is NOT already in that set.\nThe client pre-selects ``default_option_id`` and POSTs the chosen value\nas ``MessageCreate.sender_id`` on the outbound send. The server\nre-validates the choice on the send path.\n\nReturns ``{\"options\": [], \"default_option_id\": null,\n\"default_reply_sender_id\": null}`` for non-email conversations so clients\ncan rely on a stable response shape.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","sender-options"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4072ba7a-083e-4101-ad3e-206c2907ab74","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","sender-options"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_option_id\": \"string\",\n  \"default_reply_sender_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cdb2ef3f-b819-4ed8-bba9-d3edd079c36c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","sender-options"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9a7c5263-5d86-45f7-a604-7d8ef6c02e3c","name":"Switch Channel","request":{"name":"Switch Channel","description":{"content":"Generate channel switch deeplinks for a conversation.\n\nAccepts a list of ``channel_ids`` to generate links for specific channels,\nor omit to generate for all active switchable channels.\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","switch-channel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3b605f77-6f51-4096-b490-17c9095af32c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","switch-channel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"token\": \"string\",\n  \"deeplinks\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"expires_at\": \"2001-12-25T09:20:41.896Z\",\n  \"share_token_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"042853f6-cb26-4c88-9d0d-d7ea867cd3d9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","switch-channel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9a61f25c-0f37-427c-9ed2-e19a2db405d0","name":"Initiate Conversation","request":{"name":"Initiate Conversation","description":{"content":"Initiate a new outbound conversation with a contact.\n\nThis endpoint allows agents to start new conversations from the UI.\nBehavior varies by channel:\n\n- **WhatsApp**: Checks 24h window. If closed, requires template message.\n- **Email**: Sends email with optional signature appended.\n- **Telegram/Messenger/Instagram**: Sends message directly.\n\n**Required Scopes:** `conversations:create`\n\n**409 `CONTACT_BLOCKED`:** the contact is blocked\n(`{\"error\": \"CONTACT_BLOCKED\", \"message\": ..., \"contact_id\": ...}`).\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.\n\n**Request Body:**\n```json\n{\n    \"contact_id\": \"uuid\",\n    \"channel_id\": \"uuid\",\n    \"message_type\": \"text\" | \"template\" | \"email\",\n\n    // For text messages\n    \"content\": \"Hello...\",\n\n    // For WhatsApp templates\n    \"template\": {\n        \"name\": \"hello_world\",\n        \"language\": \"en\",\n        \"components\": [...]\n    },\n\n    // For email\n    \"email\": {\n        \"subject\": \"Re: Your inquiry\",\n        \"body_html\": \"<p>Hello...</p>\",\n        \"include_signature\": true,\n        \"cc\": [],\n        \"bcc\": []\n    }\n}\n```\n\n**Response:**\n```json\n{\n    \"conversation_id\": \"uuid\",\n    \"message_id\": \"uuid\",\n    \"channel_type\": \"whatsapp\",\n    \"status\": \"sent\" | \"queued\" | \"failed\" | \"template_required\",\n    \"requires_template\": false,\n    \"window_status\": {\n        \"in_window\": true,\n        \"remaining_seconds\": 3600\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","conversations","initiate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\",\n  \"content\": \"Hello! How can I help you today?\",\n  \"message_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a8764ba8-8197-4be3-806f-1d6d99c2dd1e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations","initiate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\",\n  \"content\": \"Hello! How can I help you today?\",\n  \"message_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"string\",\n  \"channel_type\": \"string\",\n  \"status\": \"string\",\n  \"message_id\": \"string\",\n  \"requires_template\": false,\n  \"window_status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"25eb8773-f332-4ed2-854d-cbb7dcd8d51a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations","initiate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\",\n  \"content\": \"Hello! How can I help you today?\",\n  \"message_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"defa80cb-b7bd-43ca-a016-0ed2baf64e7b","name":"Check Existing Conversation","request":{"name":"Check Existing Conversation","description":{"content":"Check for existing conversations without creating one.\n\nThis is Phase 1 of the two-phase conversation creation flow.\nUse this endpoint to check if there are existing open or closed\nconversations before deciding to create new or reopen existing.\n\n**No webhooks are fired by this endpoint.**\n\nAfter checking, call `/conversations/open-or-create` with:\n- `action=\"create_new\"` to create a new conversation\n- `action=\"reopen_existing\"` to reopen the closed conversation\n\n**Required Scopes:** `conversations:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.\n\n**Request Body:**\n```json\n{\n    \"contact_id\": \"uuid\",\n    \"channel_id\": \"uuid\"\n}\n```\n\n**Response:**\n```json\n{\n    \"has_existing_open\": true,\n    \"existing_open_conversation_id\": \"uuid\",\n    \"has_existing_closed\": false,\n    \"existing_closed_info\": null,\n    \"channel_type\": \"whatsapp\",\n    \"window_status\": {\n        \"in_window\": true,\n        \"requires_template\": false,\n        \"last_customer_message_at\": null,\n        \"window_end_at\": \"2026-01-17T10:00:00Z\"\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","conversations","check-existing"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2f845b70-9911-4710-a640-4f60cc760772","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations","check-existing"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"has_existing_open\": false,\n  \"has_existing_closed\": false,\n  \"channel_type\": \"string\",\n  \"existing_open_conversation_id\": \"string\",\n  \"existing_closed_info\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"window_status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"60b50819-8952-45c4-a702-56de56c72177","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations","check-existing"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2a7847cc-5172-439e-9a65-fe75da0fed75","name":"Open Or Create Conversation","request":{"name":"Open Or Create Conversation","description":{"content":"Open an existing conversation or create a new one.\n\nThis is a simplified endpoint that does NOT send a message.\nUse this when you want to navigate to a conversation and let the user\ncompose messages using the normal chat UI.\n\n**Two-Phase API (Recommended):**\n1. First call `/conversations/check-existing` to check for existing conversations\n2. Then call this endpoint with `action` to control behavior:\n   - `action=\"create_new\"`: Always create new conversation (fires webhook)\n   - `action=\"reopen_existing\"`: Reopen closed conversation (fires conversation.reopened webhook)\n   - `action=\"auto\"` (default): Backwards compatible - may create without webhook if closed exists\n\nFor WhatsApp channels, the response includes window_status to indicate\nwhether templates are required (24h window closed).\n\n**Required Scopes:** `conversations:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.\n\n**Request Body:**\n```json\n{\n    \"contact_id\": \"uuid\",\n    \"channel_id\": \"uuid\",\n    \"action\": \"create_new\"\n}\n```\n\n**Response:**\n```json\n{\n    \"conversation_id\": \"uuid\",\n    \"is_new\": true,\n    \"is_reopened\": false,\n    \"channel_type\": \"whatsapp\",\n    \"window_status\": {\n        \"in_window\": true,\n        \"requires_template\": false,\n        \"last_customer_message_at\": \"2026-01-16T10:00:00Z\",\n        \"window_end_at\": \"2026-01-17T10:00:00Z\"\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","conversations","open-or-create"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1a54186b-a20f-44c5-af58-9c28a33c5c38","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations","open-or-create"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"string\",\n  \"is_new\": true,\n  \"channel_type\": \"string\",\n  \"is_reopened\": false,\n  \"window_status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"existing_closed_conversation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"existing_open_email_threads\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3aa59082-4059-49df-86b3-a51e50ecd0b2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations","open-or-create"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"channel-uuid\",\n  \"contact_id\": \"contact-uuid\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d5c07337-2880-4e43-b3e5-b5cf1fff15d0","name":"Get Bot Session Status","request":{"name":"Get Bot Session Status","description":{"content":"Get current bot session status for a conversation.\n\n**Required Scopes:** `conversations:read`\n\nReturns:\n    - bot_active: Whether a bot is currently handling this conversation\n    - bot_session_id: The ID of the active bot session (if any)\n    - bot_name: The name of the bot handling the conversation (if any)\n    - bot_id: The ID of the bot (if any)","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","bot-session"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7796fe5b-ecc8-4de5-beb3-a8d4dec43342","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","bot-session"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c5c4f0d9-2982-4e41-9306-17c386e1023d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","bot-session"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"49be3c41-2170-4115-b7ed-a8615cb684d7","name":"Disable Bot Session","request":{"name":"Disable Bot Session","description":{"content":"Manually disable bot for this conversation.\n\nEnds the active bot session with reason AGENT_DISABLED.\nUse this when an agent wants to take over the conversation manually\nwithout sending a message first.\n\n**Required Scopes:** `conversations:update`\n\nReturns:\n    - success: Whether the bot session was disabled\n    - message: Status message","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","bot-session","disable"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"49c2d883-96c2-4856-9584-2f383ca0364a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","bot-session","disable"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fd626fd1-52eb-46a5-af01-0d762c603c85","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","bot-session","disable"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"afc16d3e-4268-480a-9d8f-35239af84572","name":"Get Available Bots","request":{"name":"Get Available Bots","description":{"content":"Get list of available bots that can handle this conversation.\n\nReturns all active bots for the tenant that could be enabled on this conversation.\n\n**Required Scopes:** `conversations:read`\n\nReturns:\n    - bots: List of available bots with id and name","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","available-bots"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"aca6ede9-1d0f-4ca9-84fc-ea80a005b3c8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","available-bots"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"922c88c9-e41c-4155-81a8-12f3abe0de8e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","available-bots"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8cf1013f-3140-4830-a9c9-70a408efe494","name":"Enable Bot Session","request":{"name":"Enable Bot Session","description":{"content":"Enable a bot for this conversation.\n\nIf bot_id is provided, enables that specific bot.\nIf bot_id is not provided, finds the best matching bot based on activation rules.\n\n**Required Scopes:** `conversations:update`\n\nArgs:\n    bot_id: Optional specific bot ID to enable\n\nReturns:\n    - success: Whether the bot session was enabled\n    - message: Status message\n    - bot_session_id: The ID of the new bot session (if created)\n    - bot_name: The name of the bot (if created)","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","bot-session","enable"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"bot_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a085313e-f850-4526-b28a-a6f5afa6c261","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","bot-session","enable"],"host":["{{baseUrl}}"],"query":[{"key":"bot_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b7b36202-f178-451f-abae-f1fd6737051f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","bot-session","enable"],"host":["{{baseUrl}}"],"query":[{"key":"bot_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cbf1c4f4-e547-42f7-b673-898be9f2ae36","name":"Get Conversation Contact Context","request":{"name":"Get Conversation Contact Context","description":{"content":"Get the contact context an AI agent sees for this conversation\n\nReturns `assurance`, the active contact-token `grant` (or null), `fields`\n(`key`, `name`, `value`, `source`, `verified`), `methods`\n(`type`, `value`, `verified`), `tags` (`name`, `verified`; ALL of the\ncontact's tags, always `verified: false`) and `subscriptions` (`list`, `channel_type`, `status`,\n`opt_in_method`, `verified`). `tags` / `subscriptions` are `[]` when unavailable.\n\n**Required Scopes:** `conversations:read` + `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","contact-context"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8b3a9cf3-a1b1-4427-9898-d2ea12fd0939","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","contact-context"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4bf0ced4-9882-4b25-8b7e-401167e3ba01","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","contact-context"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"2566fc8b-bdd8-4213-940f-09f25ffb8b63","name":"Custom Fields","description":{"content":"Define and manage custom data fields for contacts to store business-specific information.","type":"text/plain"},"item":[{"id":"e79cce20-3219-4595-811e-2009a388ce87","name":"Create Custom Field","request":{"name":"Create Custom Field","description":{"content":"Create a new custom field definition.\n\nCustom fields extend the contact model with tenant-specific attributes.\nOnce created, the field `key` and `field_type` cannot be changed.\n\n**Required Scopes:** `settings:update`\n\n**Field Types:**\n- `text`: Free-form text\n- `number`: Numeric values\n- `boolean`: True/false\n- `date`: Date only\n- `datetime`: Date and time\n- `select`: Single selection from options\n- `multiselect`: Multiple selections from options\n- `email`: Email address\n- `phone`: Phone number\n- `url`: Website URL\n- `location`: Latitude/longitude\n- `collection`: Array of values\n\n**Validation (optional):** `validation` holds value constraints, type-applicable\nkeys only — `number`: `min`/`max`; `text`/`email`/`phone`/`url`:\n`min_length`/`max_length`/`pattern`; `date`/`datetime`: `date_min`/`date_max`\n(`YYYY-MM-DD` or `today`). Other keys/types → 422 `invalid_validation`.\n\n**AI access:** `ai_access` is `none` (default: AI agents never see the field),\n`read`, `read_write` (agents may update any value) or `fill_if_empty`\n(agents may only fill an empty value).\n`location` / `collection` fields accept only `none` / `read` (422\n`invalid_ai_access`).","type":"text/plain"},"url":{"path":["api","v1","custom-fields"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"key\": \"ig\",\n  \"field_type\": \"location\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"required\": false,\n  \"default_value\": \"string\",\n  \"agent_visible\": true,\n  \"agent_editable\": true,\n  \"user_editable\": false,\n  \"display_order\": 0,\n  \"validation\": {\n    \"key_0\": 508.4804039152524,\n    \"key_1\": \"string\"\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"none\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e334490e-7491-4bd8-91c1-d8abcbb1ef26","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","custom-fields"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"key\": \"lkcrvmz\",\n  \"field_type\": \"phone\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"required\": false,\n  \"default_value\": \"string\",\n  \"agent_visible\": true,\n  \"agent_editable\": true,\n  \"user_editable\": false,\n  \"display_order\": 0,\n  \"validation\": {\n    \"key_0\": true\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"none\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"key\": \"string\",\n  \"field_type\": \"multiselect\",\n  \"required\": false,\n  \"agent_visible\": false,\n  \"agent_editable\": false,\n  \"user_editable\": true,\n  \"display_order\": 9481,\n  \"is_active\": false,\n  \"created_at\": \"1994-07-23T18:56:03.212Z\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_value\": \"string\",\n  \"validation\": {\n    \"key_0\": 1051.423984641111,\n    \"key_1\": 2124.6222261986104\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"none\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2fdec488-0b00-469a-b4e8-aef04ad5f39d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","custom-fields"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"key\": \"lkcrvmz\",\n  \"field_type\": \"phone\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"required\": false,\n  \"default_value\": \"string\",\n  \"agent_visible\": true,\n  \"agent_editable\": true,\n  \"user_editable\": false,\n  \"display_order\": 0,\n  \"validation\": {\n    \"key_0\": true\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"none\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7823ade5-69db-457c-a598-c41fdbd8afc3","name":"List Custom Fields","request":{"name":"List Custom Fields","description":{"content":"List all custom field definitions for the tenant.\n\nReturns a paginated list of custom field definitions ordered by display_order.\n\nCustom field definitions describe contact attributes, so reading them is\ngated by `contacts:read` (NOT `settings:read`). This lets contact-facing\nroles (e.g. Support Agent) render the custom-fields card without being\ngranted broad tenant-settings read access. Write operations remain gated by\n`settings:update` / `settings:admin`.\n\n**Required Scopes:** `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","custom-fields"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"active_only","value":"true","description":"Only return active fields"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"03f7d634-7570-468f-9ead-d8f5931a963c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","custom-fields"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"08442c25-590f-42a8-95e9-b0dcefefbcd6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","custom-fields"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5adc71a8-f5bc-404b-bd81-a10b1531d6d9","name":"Get Custom Field","request":{"name":"Get Custom Field","description":{"content":"Get a specific custom field definition.\n\nGated by `contacts:read` (custom fields describe contact attributes), NOT\n`settings:read`. Write operations remain gated by `settings:update` /\n`settings:admin`.\n\n**Required Scopes:** `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"78e7dd10-83ae-4032-b3ce-b3a0711a6354","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"key\": \"string\",\n  \"field_type\": \"multiselect\",\n  \"required\": false,\n  \"agent_visible\": false,\n  \"agent_editable\": false,\n  \"user_editable\": true,\n  \"display_order\": 9481,\n  \"is_active\": false,\n  \"created_at\": \"1994-07-23T18:56:03.212Z\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_value\": \"string\",\n  \"validation\": {\n    \"key_0\": 1051.423984641111,\n    \"key_1\": 2124.6222261986104\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"none\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7e889a16-4817-42c1-af24-e10bde346083","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"20aa6bd9-63c4-4e38-9428-a724bca38091","name":"Update Custom Field","request":{"name":"Update Custom Field","description":{"content":"Update a custom field definition.\n\nNote: The `key` and `field_type` cannot be changed after creation\nto preserve data integrity.\n\n`validation`: send an object to replace the value constraints, `null` to\nclear them, or omit it to keep them (see create for the allowed keys).\n\n`ai_hint` / `option_descriptions`: same semantics (object/string replaces,\n`null` clears, omitted keeps). `option_descriptions` keys must be options\nof the field after this update (422 `invalid_option_descriptions`). When\n`options` change and `option_descriptions` is omitted, descriptions of\nremoved options are dropped.\n\n`ai_access`: `none` / `read` / `read_write` / `fill_if_empty`; omit to keep,\n`null` resets to `none`. Writable modes on `location` / `collection` fields →\n422 `invalid_ai_access`.\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"required\": true,\n  \"default_value\": \"string\",\n  \"agent_visible\": false,\n  \"agent_editable\": false,\n  \"user_editable\": true,\n  \"display_order\": 7502,\n  \"validation\": {\n    \"key_0\": \"string\"\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"read\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e8d7da8c-753f-424c-9acf-249d207ec27e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"required\": true,\n  \"default_value\": \"string\",\n  \"agent_visible\": false,\n  \"agent_editable\": true,\n  \"user_editable\": false,\n  \"display_order\": 6732,\n  \"validation\": {\n    \"key_0\": 1682,\n    \"key_1\": \"string\"\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"read_write\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"key\": \"string\",\n  \"field_type\": \"multiselect\",\n  \"required\": false,\n  \"agent_visible\": false,\n  \"agent_editable\": false,\n  \"user_editable\": true,\n  \"display_order\": 9481,\n  \"is_active\": false,\n  \"created_at\": \"1994-07-23T18:56:03.212Z\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_value\": \"string\",\n  \"validation\": {\n    \"key_0\": 1051.423984641111,\n    \"key_1\": 2124.6222261986104\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"none\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b5560c01-6123-4152-b449-7cd38f68ae29","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"options\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"required\": true,\n  \"default_value\": \"string\",\n  \"agent_visible\": false,\n  \"agent_editable\": true,\n  \"user_editable\": false,\n  \"display_order\": 6732,\n  \"validation\": {\n    \"key_0\": 1682,\n    \"key_1\": \"string\"\n  },\n  \"ai_hint\": \"string\",\n  \"option_descriptions\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_access\": \"read_write\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"37189e92-8654-4baa-8d1e-efe5cc7742c7","name":"Delete Custom Field","request":{"name":"Delete Custom Field","description":{"content":"Delete (deactivate) a custom field definition.\n\nThe field is soft-deleted (marked inactive) to preserve existing data.\nInactive fields are not shown in the UI and cannot be assigned new values.\n\n**Required Scopes:** `settings:admin`","type":"text/plain"},"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"662e5c2e-e233-40f0-848b-934179ed9e20","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"d74a67e9-75fd-4740-bb26-78bc10a7b7ee","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","custom-fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4f4d04dc-90c6-4144-acc0-19290c6f564d","name":"Set Contact Field Value","request":{"name":"Set Contact Field Value","description":{"content":"Set a custom field value for a contact.\n\nThe value is validated against the field's type and options (if applicable).\nFor SELECT/MULTISELECT fields, values that don't match the defined options\nare rejected with 400 (matching is case-insensitive; the canonical option\nspelling is stored). If the field has `validation` constraints, a value\noutside them is rejected with 422 (`code: validation_failed`).\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"value\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"301758f0-3bbc-40b8-9c20-0a6b26ce5728","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"value\": {}\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"78de8591-ea9f-4c08-991a-f7dedf9d9479","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","fields",":field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"value\": {}\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2d72f197-0b26-434a-b026-ccbc839abe6b","name":"Get Contact Field Values","request":{"name":"Get Contact Field Values","description":{"content":"Get all custom field values for a contact.\n\nReturns all custom fields with their current values for the specified contact.\n\n**Required Scopes:** `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","fields"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ca6f382c-7d3e-4853-ad27-2f0d50dcab2e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","fields"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"ct-12345678\",\n  \"fields\": [\n    {\n      \"field_id\": \"cf-12345678\",\n      \"field_key\": \"company_size\",\n      \"field_name\": \"Company Size\",\n      \"field_type\": \"select\",\n      \"value\": \"51-200\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"87268c9f-9d67-4f99-b37a-2f82da484e12","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","fields"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"de7f3c0b-09c2-480f-ac82-4b9c68989c75","name":"Custom Inboxes","description":{"content":"Create and manage custom conversation inboxes with filtered views and per-user access control.","type":"text/plain"},"item":[{"id":"08a4d213-fe49-45dc-be87-361570f3b309","name":"List Inboxes","request":{"name":"List Inboxes","description":{"content":"List custom inboxes the caller can access.\n\nAdmins / owners see every inbox in the tenant. Other users see inboxes\nwhose ``access_mode='all'`` plus any inbox where they're listed in the\nACL.\n\nInboxes are saved conversation views, so reads are gated by\n``conversations:read`` (a dedicated ``inboxes:read`` scope is redundant\nand blocked Support Agent / Viewer roles unnecessarily).\n\n**Required Scopes:** ``conversations:read``","type":"text/plain"},"url":{"path":["api","v1","inboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"585597a3-ea44-43a2-bcb4-18eb61d89b06","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4450071c-30ca-4671-9f60-984b4f81b7b7","name":"Create Inbox","request":{"name":"Create Inbox","description":{"content":"Create a new inbox.\n\n**Required Scopes:** ``inboxes:create`` (+ plan feature ``custom_inboxes``)","type":"text/plain"},"url":{"path":["api","v1","inboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"access_mode\": \"all\",\n  \"tag_filter_mode\": \"none\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": true,\n  \"sort_order\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9a357dcd-b844-4c81-8704-cdd21b3a3a6e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"access_mode\": \"all\",\n  \"tag_filter_mode\": \"none\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": true,\n  \"sort_order\": 0\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"access_mode\": \"string\",\n  \"tag_filter_mode\": \"string\",\n  \"is_active\": false,\n  \"sort_order\": 3474,\n  \"created_at\": \"1959-10-01T12:34:21.714Z\",\n  \"updated_at\": \"2023-11-08T08:12:23.180Z\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1ba3802e-846d-473b-9614-9a31a821d596","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","inboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"access_mode\": \"all\",\n  \"tag_filter_mode\": \"none\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": true,\n  \"sort_order\": 0\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ffd89411-72a9-415b-a78e-8c47ee395225","name":"Get Inbox","request":{"name":"Get Inbox","description":{"content":"Get a single inbox. 404 if it doesn't exist or the caller can't see it.\n\nInboxes are saved conversation views, so reads are gated by\n``conversations:read``.\n\n**Required Scopes:** ``conversations:read``","type":"text/plain"},"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"42ddc4cc-ee44-4661-a384-0d73f9bc566c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"access_mode\": \"string\",\n  \"tag_filter_mode\": \"string\",\n  \"is_active\": false,\n  \"sort_order\": 3474,\n  \"created_at\": \"1959-10-01T12:34:21.714Z\",\n  \"updated_at\": \"2023-11-08T08:12:23.180Z\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ca998cbc-e761-4317-8c6f-cbf2c820b441","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2455ad49-fe1d-4e8c-9826-7c97afc8eaae","name":"Update Inbox","request":{"name":"Update Inbox","description":{"content":"Partial update.\n\n**Required Scopes:** ``inboxes:update`` (+ plan feature ``custom_inboxes``)","type":"text/plain"},"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"access_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"tag_filter_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"all_channels\": true,\n  \"access_tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": false,\n  \"sort_order\": 3489\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"32164b24-21fe-49a3-bd09-43a182edd28f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"access_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"tag_filter_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"all_channels\": true,\n  \"access_tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": false,\n  \"sort_order\": 3489\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"access_mode\": \"string\",\n  \"tag_filter_mode\": \"string\",\n  \"is_active\": false,\n  \"sort_order\": 3474,\n  \"created_at\": \"1959-10-01T12:34:21.714Z\",\n  \"updated_at\": \"2023-11-08T08:12:23.180Z\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"23f9247b-f83b-47b5-b1ef-b19d5924480e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"access_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"tag_filter_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"all_channels\": true,\n  \"access_tag_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": false,\n  \"sort_order\": 3489\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1003708f-8ed5-4da5-90fd-7a304f0c1c7e","name":"Delete Inbox","request":{"name":"Delete Inbox","description":{"content":"Hard delete an inbox + child rows.\n\n**Required Scopes:** ``inboxes:delete`` (+ plan feature ``custom_inboxes``)","type":"text/plain"},"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"f3cb51d7-152f-468a-91ae-aef1604b0118","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0731ed01-836d-4d0f-91bb-b1b7d2c2ecb4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"87dfab0f-9dde-4b1d-99ac-62796565e913","name":"Get Inbox Sender Options","request":{"name":"Get Inbox Sender Options","description":{"content":"List email senders the caller may use for composing a NEW email from\ninside this inbox.\n\nIf the inbox has exactly one receiving email connection and that\nconnection has a configured ``outbound_provider_id``, that's the\npre-selected default. Otherwise the caller picks from their accessible\nsupport-capable mailboxes.\n\nInboxes are saved conversation views, so reads are gated by\n``conversations:read``.\n\n**Required Scopes:** ``conversations:read``","type":"text/plain"},"url":{"path":["api","v1","inboxes",":inbox_id","sender-options"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c4042715-3851-4582-94db-ccb7890fe7a2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id","sender-options"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"07307222-12e7-4a44-b581-27c0830c09e5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id","sender-options"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"238d88a9-dcb9-4932-a9bd-2f32f93b480d","name":"Set Inbox Users","request":{"name":"Set Inbox Users","description":{"content":"Replace the full per-inbox ACL list.\n\n**Required Scopes:** ``inboxes:update`` (+ plan feature ``custom_inboxes``)","type":"text/plain"},"url":{"path":["api","v1","inboxes",":inbox_id","users"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"user_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"778be61e-3bbc-4df4-bfd9-fcc7890424f8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id","users"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"user_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"access_mode\": \"string\",\n  \"tag_filter_mode\": \"string\",\n  \"is_active\": false,\n  \"sort_order\": 3474,\n  \"created_at\": \"1959-10-01T12:34:21.714Z\",\n  \"updated_at\": \"2023-11-08T08:12:23.180Z\",\n  \"description\": \"string\",\n  \"icon\": \"string\",\n  \"color\": \"string\",\n  \"channel_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"email_connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"field_filters\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"all_channels\": false,\n  \"access_tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cb6af8dc-cd89-45ea-920a-e17a5b3836ac","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","inboxes",":inbox_id","users"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"inbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"user_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"3e3ef049-a4c1-4555-8fe8-ac54f21a729a","name":"Double Opt-In","description":{"content":"Manage double opt-in confirmation flows for email and messaging subscriptions.","type":"text/plain"},"item":[{"id":"03827011-dd9d-483c-b69c-c5ac0560f7a4","name":"Send Confirmation Email","request":{"name":"Send Confirmation Email","description":{"content":"Send double opt-in confirmation email to contact\n\nThis endpoint:\n1. Creates or finds contact by email\n2. Creates pending subscription record\n3. Generates secure confirmation token\n4. Sends confirmation email with link\n\n**GDPR Compliance:** IP address and user agent are stored for audit trail\n\n**Rate Limiting:** Maximum 3 confirmation emails per email per hour (TODO: implement)\n\nArgs:\n    request_data: Email confirmation request details\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    Confirmation details including token ID and expiry time\n\nRaises:\n    HTTPException 400: If email sending fails\n    HTTPException 500: If internal error occurs\n\n**🔐 Required Scopes:** `email:update`\n","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"ZIUHCCIIE9zjMF@HGWNSplvFGZoLrPQOeJNEyRfkV.amyv\",\n  \"list_id\": \"string\",\n  \"category\": \"string\",\n  \"ip_address\": \"string\",\n  \"user_agent\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a2aa60a2-7436-4a47-889b-dfed1e7c1ec3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"ZIUHCCIIE9zjMF@HGWNSplvFGZoLrPQOeJNEyRfkV.amyv\",\n  \"list_id\": \"string\",\n  \"category\": \"string\",\n  \"ip_address\": \"string\",\n  \"user_agent\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"token_id\": \"string\",\n  \"message\": \"string\",\n  \"expires_at\": \"1994-10-25T11:02:48.156Z\",\n  \"email\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1a724772-891d-4654-b1ee-2ff4b8afe469","name":"No list given, a list is not in this workspace, or no email sender is configured","originalRequest":{"url":{"path":["api","v1","double-opt-in","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"ZIUHCCIIE9zjMF@HGWNSplvFGZoLrPQOeJNEyRfkV.amyv\",\n  \"list_id\": \"string\",\n  \"category\": \"string\",\n  \"ip_address\": \"string\",\n  \"user_agent\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"125f1849-cfdb-4e93-bc06-e3a9e0cd8929","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"ZIUHCCIIE9zjMF@HGWNSplvFGZoLrPQOeJNEyRfkV.amyv\",\n  \"list_id\": \"string\",\n  \"category\": \"string\",\n  \"ip_address\": \"string\",\n  \"user_agent\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"147a7aa6-1d95-4498-9d71-47270bdd5a25","name":"The confirmation email could not be sent (generic message, no internal detail)","originalRequest":{"url":{"path":["api","v1","double-opt-in","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"ZIUHCCIIE9zjMF@HGWNSplvFGZoLrPQOeJNEyRfkV.amyv\",\n  \"list_id\": \"string\",\n  \"category\": \"string\",\n  \"ip_address\": \"string\",\n  \"user_agent\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Internal Server Error","code":500,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"99c7c5bc-ae41-4580-840c-c012e9408447","name":"Resend Confirmation Email","request":{"name":"Resend Confirmation Email","description":{"content":"Resend confirmation email for pending subscription\n\nIf the original token has expired, a new token will be generated.\nIf the original token is still valid, the same confirmation link will be resent.\n\nArgs:\n    request_data: Email address to resend confirmation to\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    Success message\n\nRaises:\n    HTTPException 404: If no pending confirmation found for this email\n    HTTPException 400: If resend fails\n\n**🔐 Required Scopes:** `email:update`\n","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"pvmQxI@tkdpkjmXWutXOuVrUdGDdoRGh.lvrq\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"08f86e2d-8f71-41da-8416-23fd9b5e15f8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"pvmQxI@tkdpkjmXWutXOuVrUdGDdoRGh.lvrq\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6b4664a6-66b0-4507-a24d-89d02b89d98c","name":"A list is not in this workspace, or no email sender is configured","originalRequest":{"url":{"path":["api","v1","double-opt-in","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"pvmQxI@tkdpkjmXWutXOuVrUdGDdoRGh.lvrq\"\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"bcb866b6-d902-487f-8187-03f8e6788622","name":"No pending confirmation for this email address","originalRequest":{"url":{"path":["api","v1","double-opt-in","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"pvmQxI@tkdpkjmXWutXOuVrUdGDdoRGh.lvrq\"\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"910e4ef5-3cba-4fcc-9b71-2820ac4103f2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"pvmQxI@tkdpkjmXWutXOuVrUdGDdoRGh.lvrq\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c18d9c3c-ff02-4e6a-9da7-8589b19e644f","name":"The confirmation email could not be resent (generic message, no internal detail)","originalRequest":{"url":{"path":["api","v1","double-opt-in","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"pvmQxI@tkdpkjmXWutXOuVrUdGDdoRGh.lvrq\"\n}","options":{"raw":{"language":"json"}}}},"status":"Internal Server Error","code":500,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"57f6043b-75db-4c7f-beeb-ca1fa7193505","name":"Get Pending Confirmations","request":{"name":"Get Pending Confirmations","description":{"content":"Get list of pending email confirmations\n\nShows all contacts awaiting email confirmation for this tenant.\nUseful for admin dashboard to track conversion rates.\n\nArgs:\n    limit: Maximum number of results (default 100, max 1000)\n    offset: Pagination offset (default 0)\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    List of pending confirmations with pagination info\n\n**🔐 Required Scopes:** `email:read`\n","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","pending"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"100"},{"disabled":false,"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7772c7ab-fa1f-4723-8a46-208cdf60e2de","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","pending"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"pending_confirmations\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 5327,\n  \"limit\": 6098,\n  \"offset\": 8421\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"596bbd98-0ada-4acd-b4e2-a4b01ce4d984","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","pending"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"d4757a47-b16b-46c0-aaef-e45e22981ad5","name":"Double Opt-In Templates","description":{"content":"Create and customize confirmation message templates for double opt-in flows.","type":"text/plain"},"item":[{"id":"87125e3c-1ab3-45f3-b115-07bc8a52e524","name":"List Templates","request":{"name":"List Templates","description":{"content":"List all double opt-in templates available to the tenant.\n\nArgs:\n    include_system: Include system templates (default: True)\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nReturns:\n    List of templates (tenant custom + system if include_system=True)","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_system","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"254f30b3-2531-4302-9ed4-2d613bb63ff8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates"],"host":["{{baseUrl}}"],"query":[{"key":"include_system","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_content_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_system_template\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"button_text\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subject_line\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_content_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_system_template\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"button_text\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subject_line\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"c1c09b1e-ddce-4a77-bc50-4fb5284de0a6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates"],"host":["{{baseUrl}}"],"query":[{"key":"include_system","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7cea97f4-5682-4c97-b0ca-408098bd1f4f","name":"Create Template","request":{"name":"Create Template","description":{"content":"Create a new double opt-in template.\n\nIf copy_from_system=True, finds the system template and duplicates its EmailContent.\nIf copy_from_system=False, uses the provided email_content_id.\n\nArgs:\n    template_data: Template creation data\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nReturns:\n    Created template\n\nRaises:\n    400: If validation fails\n    404: If email_content_id or system template not found\n\n**🔐 Required Scopes:** `email:read`\n","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true,\n  \"email_content_id\": \"string\",\n  \"copy_from_system\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a547a79d-e033-4c82-bf68-b59f66bd716f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true,\n  \"email_content_id\": \"string\",\n  \"copy_from_system\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_system_template\": false,\n  \"created_at\": \"1980-09-23T04:28:54.328Z\",\n  \"updated_at\": \"1963-11-01T06:28:39.422Z\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"863e5d1b-69bf-459b-b050-6c4e1e1dfaa3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true,\n  \"email_content_id\": \"string\",\n  \"copy_from_system\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6e900544-cff2-49fc-95a8-f8780ac28de8","name":"Get Template","request":{"name":"Get Template","description":{"content":"Get a specific template by ID.\n\nArgs:\n    template_id: Template ID\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nReturns:\n    Template details\n\nRaises:\n    404: If template not found or not accessible","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4c97fcd0-a7ee-4bae-85b3-adf006a87534","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_system_template\": false,\n  \"created_at\": \"1980-09-23T04:28:54.328Z\",\n  \"updated_at\": \"1963-11-01T06:28:39.422Z\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b8b0057b-b954-4ec2-b8f3-bea0bc42e6de","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"75eaa3ac-f381-4c3a-95ba-18f7afba456e","name":"Update Template","request":{"name":"Update Template","description":{"content":"Update a template.\n\nArgs:\n    template_id: Template ID\n    template_data: Fields to update\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nReturns:\n    Updated template\n\nRaises:\n    404: If template not found\n    403: If trying to edit system template","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"string\",\n  \"subject_line\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2eae4692-9a34-479c-8731-d8ba0ab6044d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"string\",\n  \"subject_line\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_system_template\": false,\n  \"created_at\": \"1980-09-23T04:28:54.328Z\",\n  \"updated_at\": \"1963-11-01T06:28:39.422Z\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2143c031-3f99-4905-8047-118f9392625f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"string\",\n  \"subject_line\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a25f6c0e-db7c-4acd-857e-221402a4a855","name":"Delete Template","request":{"name":"Delete Template","description":{"content":"Delete a template.\n\nArgs:\n    template_id: Template ID\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nRaises:\n    404: If template not found\n    403: If trying to delete system template","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"aeb11b7f-967b-4fd7-b16b-7d5f5dea1c47","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"df4b28ea-f715-42e3-91fd-b4b6a7ec2190","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae8baf81-ee6d-4dc6-954c-b6ffc58c4143","name":"Copy System Template","request":{"name":"Copy System Template","description":{"content":"Copy a system template to tenant's custom templates.\n\nThis allows tenants to customize system templates. Creates a duplicate\nof the EmailContent and a new DoubleOptInEmailTemplate with tenant_id.\n\nArgs:\n    template_id: System template ID to copy\n    copy_data: Optional overrides for name, description, button_text, subject_line\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nReturns:\n    New template owned by tenant\n\nRaises:\n    404: If system template not found\n    400: If trying to copy non-system template\n\n**🔐 Required Scopes:** `email:create`\n","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates",":template_id","copy"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"string\",\n  \"subject_line\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8392c78a-8ad8-4998-a229-35f09beb0800","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id","copy"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"string\",\n  \"subject_line\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"is_system_template\": false,\n  \"created_at\": \"1980-09-23T04:28:54.328Z\",\n  \"updated_at\": \"1963-11-01T06:28:39.422Z\",\n  \"description\": \"string\",\n  \"button_text\": \"Confirm Subscription\",\n  \"subject_line\": \"Please confirm your subscription\",\n  \"is_active\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d29d5ea9-8642-4bc2-8212-bc983b77eda1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id","copy"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"button_text\": \"string\",\n  \"subject_line\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d5cf4ec2-37e3-4389-9568-20fa2e4a8c53","name":"Preview Template","request":{"name":"Preview Template","description":{"content":"Generate HTML preview for a double opt-in template.\n\nUses example/placeholder values for confirmation_url, email, etc.\n\nArgs:\n    template_id: Template ID\n    tenant_id: Current tenant ID\n    current_user: Current authenticated user\n\nReturns:\n    {\"html\": \"...rendered HTML...\", \"subject\": \"...subject line...\"}\n\nRaises:\n    400: If the template has no renderable email content yet\n    404: If template or email content not found\n    500: If MJML compilation fails\n\n**🔐 Required Scopes:** `email:read`\n","type":"text/plain"},"url":{"path":["api","v1","double-opt-in","templates",":template_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e87418ec-99f2-4f16-949d-6214e6acb4d9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0190910f-6482-4b41-9ada-35f2706526bd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","double-opt-in","templates",":template_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"d6428b4b-e3b0-4c43-b112-221c133fddf1","name":"Email Campaigns","description":{"content":"Create, schedule, and send email marketing campaigns using layout templates and content blocks. Track opens and clicks.","type":"text/plain"},"item":[{"id":"818f4a03-f569-41ec-bd5a-a737c285db67","name":"Get Recipient Count","request":{"name":"Get Recipient Count","description":{"content":"Audience preview and price for an UNSAVED campaign draft.\n\nCounts come from the same recipient resolution the send uses (subscribed\nlist members only, spam complaints / hard bounces / suppressed addresses\nexcluded, duplicate addresses collapsed), so `subscribed` is the number of\nemails the campaign will actually send.\n\nAudience: `all_contacts` wins; else `list_ids`; else\n`subscription_categories`; nothing selected returns zeros.\n\n- **total**: contacts matching the audience before exclusions\n- **subscribed** / **recipient_count**: valid recipients\n- **unsubscribed**, **bounced**, **duplicate_email_skipped_count**,\n  **no_email_count**: why the rest are excluded\n  (`total` = the sum of all five)\n- **cost**: present when `email_provider_config_id` or\n  `email_integration_id` is given -- the real price from the tenant's\n  pricing model (managed vs own-provider rate, same as the invoice),\n  before the plan's included messages. An id that is not one of this\n  workspace's providers / integrations returns HTTP 404\n  (\"Email provider configuration not found\" / \"Email integration not found\").\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns","recipient-count"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"all_contacts\": false,\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"757d8060-97fa-46cc-bc0c-22f414d1aa52","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns","recipient-count"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"all_contacts\": false,\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"bounced\": 18,\n  \"cost\": {\n    \"cost_category\": \"email_campaign_managed\",\n    \"cost_per_email\": 0.8,\n    \"plan_included_messages\": 1000,\n    \"recipient_count\": 950,\n    \"sending_type\": \"managed\",\n    \"total_cost\": 760,\n    \"total_cost_eur\": \"7.60\",\n    \"total_cost_eur_precise\": \"7.600000\",\n    \"unit_price_eur\": \"0.008000\"\n  },\n  \"duplicate_email_skipped_count\": 2,\n  \"list_breakdown\": {\n    \"list-456\": 420,\n    \"list-789\": 600\n  },\n  \"no_email_count\": 0,\n  \"recipient_count\": 950,\n  \"subscribed\": 950,\n  \"subscription_breakdown\": {},\n  \"total\": 1000,\n  \"unsubscribed\": 30\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5673d4ad-29de-47ce-bfd1-99b02cb97c77","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns","recipient-count"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"all_contacts\": false,\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5a677012-66e1-45ef-900c-a28543fd3dbc","name":"Create Campaign","request":{"name":"Create Campaign","description":{"content":"Create a new email campaign.\n\n- Creates both base Campaign and EmailCampaign records\n- Validates provider/integration and content exist\n- Estimates recipient count\n- Optional `send_rate_limit` (emails per minute, 1-60000) and\n  `send_batch_size` (recipients per batch, at least 1). Rejected values\n  return HTTP 422 `{code, message}`: `send_rate_limit_out_of_range`,\n  `send_batch_size_invalid`, `send_pacing_unavailable`.\n\n**Required Scopes:** `campaigns:create`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"subject_line\": \"string\",\n  \"mailbox_id\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"strin\",\n  \"from_email\": \"OKUcFEa@zObrLWAxwADQMpXjCZoSEFuLJyvvzlSfQ.tuc\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": false,\n  \"track_clicks\": false,\n  \"scheduled_at\": \"2015-08-28T06:06:06.871Z\",\n  \"status\": \"string\",\n  \"send_rate_limit\": 5544,\n  \"send_batch_size\": 4289\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"81bf9986-a344-43da-8337-5bf359533c2a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"subject_line\": \"string\",\n  \"mailbox_id\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"strin\",\n  \"from_email\": \"OKUcFEa@zObrLWAxwADQMpXjCZoSEFuLJyvvzlSfQ.tuc\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": false,\n  \"track_clicks\": false,\n  \"scheduled_at\": \"2015-08-28T06:06:06.871Z\",\n  \"status\": \"string\",\n  \"send_rate_limit\": 5544,\n  \"send_batch_size\": 4289\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5b348e8e-9212-44a7-88e7-6374c25a9384","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"subject_line\": \"string\",\n  \"mailbox_id\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"strin\",\n  \"from_email\": \"OKUcFEa@zObrLWAxwADQMpXjCZoSEFuLJyvvzlSfQ.tuc\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": false,\n  \"track_clicks\": false,\n  \"scheduled_at\": \"2015-08-28T06:06:06.871Z\",\n  \"status\": \"string\",\n  \"send_rate_limit\": 5544,\n  \"send_batch_size\": 4289\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c83fef38-5cb5-4e80-b15f-fdd7deec47d9","name":"List Campaigns","request":{"name":"List Campaigns","description":{"content":"List email campaigns with pagination.\n\nReturns a paginated list of email campaigns for the tenant.\n\n**Required Scopes:** `campaigns:read`\n\n**Response format:**\n```json\n{\n    \"items\": [...],\n    \"pagination\": {\n        \"total\": 50,\n        \"page\": 1,\n        \"page_size\": 20,\n        \"total_pages\": 3,\n        \"has_next\": true,\n        \"has_prev\": false\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","email-campaigns"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"campaign_status","value":"string","description":"Filter by campaign status"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"08896a2a-f426-45ad-9d01-50d2c204a9a8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"campaign_status","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e555aadc-1f11-4f19-b528-5ad3614ae14b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"campaign_status","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dd2c24a7-22de-40eb-980e-1094399a6f88","name":"Get Email Campaign Unsubscribe Counts","request":{"name":"Get Email Campaign Unsubscribe Counts","description":{"content":"Batch opt-out counts for the email campaigns INDEX page.\n\nONE grouped query over ``unsubscribe_tokens`` (used tokens) for the given\nemail campaign ids (``EmailCampaign.id``, tenant-scoped). All email opt-outs\nare link/one-click, so per campaign ``exact == total`` and ``estimated`` is\nalways 0. Campaigns with no opt-outs are OMITTED — treat a missing id as 0.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns","unsubscribe-counts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"ids","value":"string","description":"(Required) Comma-separated email campaign ids (max 200)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c76f14e4-de1c-4273-9f52-d309ab300613","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns","unsubscribe-counts"],"host":["{{baseUrl}}"],"query":[{"key":"ids","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"counts\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"23332433-eeef-4bb2-8198-00327e9bf0cb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns","unsubscribe-counts"],"host":["{{baseUrl}}"],"query":[{"key":"ids","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b9ac33ef-431a-4692-9f59-9608f862da9a","name":"Get Campaign","request":{"name":"Get Campaign","description":{"content":"Get email campaign details.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b47f847e-33d7-49f9-b315-e71cfc4af6be","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1fc232dd-8ae3-4587-a6a5-c65e2f4c09b6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ea4a3ed9-f3f9-4e26-b14f-d4990e6bd5bd","name":"Update Campaign","request":{"name":"Update Campaign","description":{"content":"Update email campaign.\n\n- Can only update campaigns in DRAFT or SCHEDULED status\n- Once sending/sent, campaigns are immutable -- except the send speed\n  (`send_rate_limit`, emails per minute) and batch size\n  (`send_batch_size`): a sending, paused or failed campaign may change\n  ONLY these two (explicit `null` clears one). The next emails and the\n  next batch use the new values. Switching them on while the campaign is\n  sending moves the recipients not sent yet into batch 1 at the new speed.\n- Rejected values return HTTP 422 `{code, message}`:\n  `send_rate_limit_out_of_range`, `send_batch_size_invalid`,\n  `send_pacing_unavailable`, `send_pacing_not_editable` (any other status,\n  e.g. completed or cancelled).\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"s5aK4Z8u9EXGs@WKeFgERckDtVmCbZym.hxuu\",\n  \"reply_to_email\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": true,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"scheduled_at\": \"1949-12-13T13:26:14.721Z\",\n  \"send_rate_limit\": 8089,\n  \"send_batch_size\": 34\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"ed836860-1ef7-4f16-be0d-0a278bbe73eb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"s5aK4Z8u9EXGs@WKeFgERckDtVmCbZym.hxuu\",\n  \"reply_to_email\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": true,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"scheduled_at\": \"1949-12-13T13:26:14.721Z\",\n  \"send_rate_limit\": 8089,\n  \"send_batch_size\": 34\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"163a6d9a-8048-426f-9c1a-07b237189ba5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"s5aK4Z8u9EXGs@WKeFgERckDtVmCbZym.hxuu\",\n  \"reply_to_email\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": true,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"scheduled_at\": \"1949-12-13T13:26:14.721Z\",\n  \"send_rate_limit\": 8089,\n  \"send_batch_size\": 34\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b4a02240-ea72-4d2c-a25e-e549c189d9d8","name":"Delete Campaign","request":{"name":"Delete Campaign","description":{"content":"Delete email campaign.\n\n- Sending, throttled (paused by the send limit) and completed campaigns\n  cannot be deleted: 400 `Cannot delete campaign that has been sent`.\n  Pause the campaign first, then delete it.\n- A paused, cancelled or failed campaign can be deleted; the emails it\n  already sent stay on the invoice (they are kept for billing before the\n  delete, in the month they were sent).\n\n**Required Scopes:** `campaigns:delete`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"17e6d402-9dd7-471c-824c-7837295ea44c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"9d0e3631-b3b4-4560-8a52-4b60de3e7948","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ef27fd20-7690-4526-a070-83dbf1cb6dde","name":"Send Campaign","request":{"name":"Send Campaign","description":{"content":"Send or schedule email campaign.\n\n- If send_test=true, sends to test_emails only (TODO)\n- Otherwise, queues campaign to Pub/Sub for async sending\n- Updates campaign status to SENDING\n- Deducts balance upfront (prepaid model)\n- Send speed and batches: with a `send_rate_limit` and/or\n  `send_batch_size` saved on the campaign, the emails go out at that\n  speed and in batches of that size. After each batch the campaign pauses\n  (`status = \"paused\"`, `throttle_reason = \"batch_complete\"`) until\n  `POST /email-campaigns/{id}/send-next-batch`. A saved batch size that\n  cannot be used returns HTTP 422 `{code, message}` before anything is\n  sent (`send_pacing_unavailable`, `send_batch_size_invalid`).\n- HTTP 409 \"This campaign is already being sent\" when the campaign is\n  already `sending` / `throttled` / `paused`, or a concurrent request (a\n  second click, the scheduled send) started it first -- nothing is queued\n  twice. HTTP 409 \"This campaign was paused or cancelled while it was\n  being prepared for sending. Refresh and try again.\" when that happened\n  during the send.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"send_test\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0d1b8726-10db-4316-8e41-6cc986378e27","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"send_test\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"campaign_id\": \"campaign-789\",\n  \"estimated_recipients\": 1000,\n  \"message\": \"Campaign queued for sending\",\n  \"status\": \"sending\",\n  \"success\": true,\n  \"warnings\": []\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cb46c125-f8d3-44c6-9453-973d6c43100e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"send_test\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fbbb72fe-836d-4ef0-9d37-92ac122496c5","name":"Schedule Campaign","request":{"name":"Schedule Campaign","description":{"content":"Schedule an email campaign for future sending.\n\nAccepts a local datetime and IANA timezone string. The backend converts to UTC\nfor storage. The original timezone is preserved for display purposes.\n\nThe scheduled time must be at least 5 minutes in the future.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scheduled_at\": \"2026-03-01T14:00:00\",\n  \"timezone\": \"Europe/Berlin\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"32cf2de7-4218-4897-b239-339c7174e0ee","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scheduled_at\": \"2026-03-01T14:00:00\",\n  \"timezone\": \"Europe/Berlin\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"833b095e-f090-43c1-be8e-0beef79c54d8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scheduled_at\": \"2026-03-01T14:00:00\",\n  \"timezone\": \"Europe/Berlin\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"52e10919-086b-49bd-97fe-fbe47d0cf9bf","name":"Cancel Schedule","request":{"name":"Cancel Schedule","description":{"content":"Cancel a scheduled email campaign and move it back to draft.\n\nThis clears the scheduled_at time and reverts the status to draft,\nallowing the user to edit and reschedule. The timezone is preserved\nfor convenience if the user reschedules later.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","cancel-schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"f3f25db8-8e3f-472c-8a8b-97085811f355","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","cancel-schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"38bcdfa5-bc1e-49a3-841c-3f5cb8ec4d59","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","cancel-schedule"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e3f1ae36-0ec1-473f-a720-b2751edbe75c","name":"Cancel Campaign","request":{"name":"Cancel Campaign","description":{"content":"Cancel scheduled, sending or paused campaign.\n\n- Updates status to CANCELLED (also from `paused`, including a campaign\n  waiting for its next batch)\n- Stops further Pub/Sub processing\n- Recipients still waiting for a later batch are not sent\n- Does NOT refund balance (already deducted)\n\nNeeds the same scope as send / pause / resume (`campaigns:send`):\nstopping a send is a send-control action, not a content edit.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"87cf8ed6-b5e7-4c9f-b21c-ef2479e71a16","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8603832c-a0c3-49b4-9b1e-224f23249a92","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"44f30105-a8ab-4522-b87f-963cf004698a","name":"Pause Email Campaign","request":{"name":"Pause Email Campaign","description":{"content":"Pause a sending email campaign\n\nOnly a campaign in `sending` or `throttled` can be paused (anything else\nreturns HTTP 400). Emails already handed to the email provider are not\nrecalled; everyone else waits until `POST /email-campaigns/{id}/resume`.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"45d4cd99-76be-4dde-9af1-deb8e5874246","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ec0bb95d-f9a4-45c4-996b-ea612ae4791e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"08fdc253-40d5-4b2f-ae0d-26f9531bd565","name":"Resume Email Campaign","request":{"name":"Resume Email Campaign","description":{"content":"Resume a paused email campaign\n\nOnly a `paused` campaign can be resumed (anything else returns HTTP 400).\nSending continues with everyone who has not been sent yet. If a send\nspeed or batch size was saved while the campaign was paused, it applies\nfrom now on. A campaign that finished a batch\n(`throttle_reason = \"batch_complete\"`) sends its next batch, exactly\nlike `POST /email-campaigns/{id}/send-next-batch` with an empty body.\nA campaign sent in batches that ended as `completed` or `failed` while\nrecipients were still waiting is re-opened the same way. HTTP 422\n`send_pacing_unavailable` while sending at a set speed or in batches is\nbriefly unavailable.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"64bb7045-0f2a-4a33-adf1-3b1743adf118","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"campaign_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"sending_method\": \"string\",\n  \"email_template_id\": \"string\",\n  \"email_content_id\": \"string\",\n  \"preview_text\": \"string\",\n  \"reply_to_email\": \"string\",\n  \"subscription_categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"list_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"personalization_enabled\": false,\n  \"tracking_enabled\": true,\n  \"track_clicks\": true,\n  \"sent_count\": 0,\n  \"delivered_count\": 0,\n  \"opened_count\": 0,\n  \"clicked_count\": 0,\n  \"bounced_count\": 0,\n  \"complained_count\": 0,\n  \"failed_count\": 0,\n  \"recipient_count\": 0,\n  \"campaign_name\": \"string\",\n  \"campaign_status\": \"string\",\n  \"scheduled_at\": \"1969-05-28T06:46:02.366Z\",\n  \"timezone\": \"string\",\n  \"throttle_reason\": \"string\",\n  \"send_rate_limit\": 6116,\n  \"send_batch_size\": 5593,\n  \"current_batch_number\": 7995\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"93934602-44b9-4901-857e-655b851d13cb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f3a84a7c-5343-488d-8572-13295ac7cafa","name":"Send Next Email Batch","request":{"name":"Send Next Email Batch","description":{"content":"Send the next batch of an email campaign sent in batches\n\nOnly for a campaign that finished a batch: `status = \"paused\"` with\n`throttle_reason = \"batch_complete\"`, or one that ended as `completed` /\n`failed` while recipients were still waiting (it continues its unfinished\nbatch first, if any). HTTP 422 `send_pacing_unavailable` while batch\nsending is briefly unavailable. Anything else returns HTTP 409\n`{\"code\": \"campaign_not_awaiting_batch\", \"message\": ...}` (also when two\nrequests race: only the first one sends a batch).\n\nBody (optional): `{\"batch_size\": 500}` sends 500 recipients now and saves\n500 as the campaign's batch size (1-1,000,000; anything else is HTTP 422\n`{\"code\": \"send_batch_size_invalid\", \"message\": ...}`);\n`{\"all_remaining\": true}` sends everyone who is still waiting. An empty\nbody sends the next batch at the saved batch size. Recipients who\nunsubscribed, bounced or were suppressed\nsince the campaign was prepared are skipped (`skipped_ineligible`).\n\n**Response (200):** `{batch_number, armed, skipped_ineligible, remaining,\ncampaign}`.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","send-next-batch"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"batch_size\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"all_remaining\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"fa95ab56-ad07-4072-8534-7c4e182da73c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","send-next-batch"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"batch_size\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"all_remaining\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"batch_number\": 8298,\n  \"armed\": 5838,\n  \"campaign\": {\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"campaign_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subject_line\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"from_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"from_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_provider_config_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_integration_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sending_method\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_template_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_content_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"preview_text\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"reply_to_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subscription_categories\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"list_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"personalization_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tracking_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"track_clicks\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sent_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"delivered_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"opened_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"clicked_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bounced_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"complained_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"failed_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"campaign_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"campaign_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"scheduled_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"throttle_reason\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_rate_limit\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"send_batch_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"current_batch_number\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"skipped_ineligible\": 0,\n  \"remaining\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bfa3c134-ec77-4311-aee2-e8fd3deb657b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","send-next-batch"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"batch_size\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"all_remaining\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"90138be1-4e64-4684-aa87-ce9e0951c3e8","name":"List Email Campaign Batches","request":{"name":"List Email Campaign Batches","description":{"content":"Per-batch delivery counts of an email campaign sent in batches\n\nOne item per batch with its recipient counts, oldest batch first.\n`remaining` is the number of recipients waiting for a later batch,\n`current_batch_number` the batch the campaign is on and\n`send_batch_size` the saved batch size. A campaign that is not sent in\nbatches returns an empty list.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","batches"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Batches per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"20eebe84-0766-44f2-b609-74a42d3a9810","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","batches"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"remaining\": 0,\n  \"current_batch_number\": 1092,\n  \"send_batch_size\": 4483\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0c954878-6f99-41fd-98c8-21a00d8e795d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","batches"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f2ce8fdb-ee60-4f96-b6af-d9cc48b9fc3a","name":"Get Email Campaign Send Plan","request":{"name":"Get Email Campaign Send Plan","description":{"content":"Send plan of an email campaign: speed, batches and estimated duration\n\nRead-only estimate for the campaign's audience at its saved send speed\nand batch size, or at the values given as query parameters (to preview a\nchange before saving it). `eta_seconds` estimates the time to send\neveryone who is left (time paused between batches not included).\n`pacing_available = false` means send speed and batches are not\navailable for this account yet.\n\nOut-of-range query values return HTTP 422 `{code, message}`\n(`send_rate_limit_out_of_range`, `send_batch_size_invalid`).\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","send-plan"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"send_rate_limit","value":"4595","description":"Preview this send speed (emails per minute, 1-60000) instead of the saved one"},{"disabled":false,"key":"send_batch_size","value":"4595","description":"Preview this batch size (>= 1) instead of the saved one"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"865ce1ed-8567-4a96-bed1-42728dc4aa5a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","send-plan"],"host":["{{baseUrl}}"],"query":[{"key":"send_rate_limit","value":"4595"},{"key":"send_batch_size","value":"4595"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"pacing_available\": true,\n  \"pacing_unavailable_reason\": \"string\",\n  \"total_recipients\": 0,\n  \"remaining\": 0,\n  \"channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"requested_rate_per_minute\": 1108,\n  \"effective_rate_per_minute\": 4324.130843266144,\n  \"batch_size\": 6974,\n  \"batches\": 6853,\n  \"eta_seconds\": 2231,\n  \"eta_seconds_per_batch\": 3287,\n  \"rate_limited_by\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5300d685-90b1-4c8f-a222-9157b1a899c8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","send-plan"],"host":["{{baseUrl}}"],"query":[{"key":"send_rate_limit","value":"4595"},{"key":"send_batch_size","value":"4595"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"010c4946-e179-458f-9913-c1a31546d53d","name":"Get Campaign Analytics","request":{"name":"Get Campaign Analytics","description":{"content":"Get detailed campaign analytics.\n\nReturns overall stats, rates, time-series data, and top performing links.\n`held_count` is the number of recipients waiting for a later batch\n(campaigns sent in batches); they are neither sent nor failed.\n\n**Required Scopes:** `analytics:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2dc3205e-514b-41af-85dd-7f44b344c7bd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"bounce_rate\": 2,\n  \"bounced_count\": 20,\n  \"campaign_id\": \"campaign-789\",\n  \"click_rate\": 12.2,\n  \"click_to_open_rate\": 26.7,\n  \"clicked_count\": 120,\n  \"clicks_by_hour\": {\n    \"12\": 50,\n    \"13\": 70\n  },\n  \"complained_count\": 2,\n  \"complaint_rate\": 0.2,\n  \"delivered_count\": 980,\n  \"delivery_rate\": 98,\n  \"email_campaign_id\": \"ecampaign-123\",\n  \"open_rate\": 45.9,\n  \"opened_count\": 450,\n  \"opens_by_hour\": {\n    \"12\": 200,\n    \"13\": 250\n  },\n  \"sends_by_hour\": {\n    \"12\": 500,\n    \"13\": 500\n  },\n  \"sent_count\": 1000,\n  \"top_links\": [\n    {\n      \"clicks\": 80,\n      \"unique_clicks\": 65,\n      \"url\": \"https://example.com/page\"\n    },\n    {\n      \"clicks\": 40,\n      \"unique_clicks\": 38,\n      \"url\": \"https://example.com/other\"\n    }\n  ],\n  \"total_recipients\": 1000\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9e95a6d7-9463-4d83-ac95-577aec8701c1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b623cec4-2aee-4ae5-a53d-8b58600d369a","name":"Get Campaign Unsubscribes","request":{"name":"Get Campaign Unsubscribes","description":{"content":"List recipients who opted out via THIS email campaign's unsubscribe link.\n\nCampaign-attributed opt-outs, sourced from ``unsubscribe_tokens`` (SHARD)\nstamped with the ``email_campaign_id`` at send time. Ordered by\n``unsubscribed_at`` DESC, paginated (``page``/``page_size``, default 25).\n\nOnly LINK-method opt-outs exist today; ``method_counts.keyword`` is reserved\n(``null``) for a future keyword-based source that lands once an events table\nexists.\n\n**Required Scopes:** `analytics:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"30bbdcd4-9951-40d0-97aa-06a6d6cfb52c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"contact_id\": \"c1a2b3\",\n      \"contact_name\": \"Jane Doe\",\n      \"email\": \"jane@example.com\",\n      \"method\": \"link\",\n      \"unsubscribed_at\": \"2026-09-14T10:30:00\"\n    }\n  ],\n  \"method_counts\": {\n    \"link\": 3\n  },\n  \"pagination\": {\n    \"page\": 1,\n    \"page_size\": 25,\n    \"total\": 3\n  },\n  \"total_unsubscribes\": 3\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"81412e62-8172-4199-9296-b26c6fc1744c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"573751dd-a304-4097-9ad4-a9ac82cf1e9e","name":"Get Campaign Detailed Analytics","request":{"name":"Get Campaign Detailed Analytics","description":{"content":"Get detailed campaign analytics with device breakdown and link performance.\n\nReturns advanced metrics including:\n- Link performance with CTR per link\n- Click timestamps per link\n\n**Required Scopes:** `analytics:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","analytics","detailed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2038f920-eccd-445e-bb7f-12321bb986ec","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","analytics","detailed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"campaign_id\": \"ecampaign-123\",\n  \"device_breakdown\": {\n    \"Desktop\": 30,\n    \"Mobile\": 42,\n    \"Tablet\": 3,\n    \"Unknown\": 1\n  },\n  \"link_performance\": [\n    {\n      \"click_through_rate\": 12.5,\n      \"clicks\": 120,\n      \"first_click_at\": \"2024-01-01T12:00:00\",\n      \"last_click_at\": \"2024-01-02T14:30:00\",\n      \"short_url\": \"https://example.com/l/abc123\",\n      \"url\": \"https://example.com/page\"\n    }\n  ],\n  \"total_tracked_links\": 5\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0cc1a6b1-804f-4899-8e38-a81d81264289","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","analytics","detailed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"116efc0e-55db-497d-b4a3-e72cfc9de36d","name":"Get Campaign Recipients","request":{"name":"Get Campaign Recipients","description":{"content":"List an email campaign's recipients with delivery status.\n\nGroups: `successful` = sent/delivered/opened/clicked, `failed` =\nfailed/bounced/complained, `all` = the union of both, `held` =\nrecipients waiting for a later batch (campaigns sent in batches; status\n`held`, not part of `all`). Each item:\n`{id, contact_id, name, identifier, status, error_reason, sent_at,\ndelivered_at, failed_at}` where `identifier` is the email address and\n`error_reason` is the bounce reason (bounces) or the send error.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"all","description":"Recipient group: failed | successful | held | all"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"},{"disabled":false,"key":"search","value":"string","description":"Search email address or contact name"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"abbc934a-c52e-40a9-922f-f1c55a622b0b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"all"},{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"search","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a594433f-3caa-42c6-9a4d-433e83f853e4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"all"},{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"search","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"40413f2b-168d-4a43-acc7-fd12ae1703fe","name":"Retry Email Campaign Recipient","request":{"name":"Retry Email Campaign Recipient","description":{"content":"Retry a single failed recipient of an email campaign.\n\nCalls the retry execution in ``EmailCampaignService.retry_single_recipient``\nand returns the updated recipient item so the UI can update the row inline.\n\n- Recipient not found -> 404\n- Campaign not `completed`, `failed` or `paused` -> 409 \"Recipients can\n  only be retried on a completed, failed or paused campaign\"\n- Recipient reported the email as spam (`complained`) -> 409 \"This\n  recipient reported the email as spam and cannot be sent to again\"\n- Recipient not retryable in its current state (e.g. not failed) -> 409\n- Recipient permanently undeliverable (hard email bounce) -> 422\n\nA `completed` / `failed` campaign goes back to `sending` and the recipient\nis sent right away. A `paused` campaign stays paused: the recipient waits\nand is sent together with everyone else when the campaign is resumed.\nCampaigns sent in batches: the recipient rejoins the current batch\n(status `held`) and is sent at the campaign's send speed.\n\n**Required Scopes:** `campaigns:send`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"d496c695-34a6-4d7f-a310-3a87c83fca0f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"contact_id\": \"string\",\n  \"name\": \"string\",\n  \"identifier\": \"string\",\n  \"error_reason\": \"string\",\n  \"last_error_code\": \"string\",\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"failed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f4611834-e90b-455d-bcf7-c1164822d5c9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e92132d9-c34a-462e-b6da-3fa09bbad10d","name":"Delete Email Campaign Recipient","request":{"name":"Delete Email Campaign Recipient","description":{"content":"Remove a single recipient from an email campaign.\n\nHard-deletes the per-recipient row (tenant + campaign ownership validated),\nthen recomputes the email campaign's denormalized counters.\n\n- HTTP 409 \"This recipient is queued for sending and cannot be removed\n  while the campaign is sending or paused. Cancel the campaign first.\"\n  for a `queued` recipient of a `sending` / `throttled` / `paused`\n  campaign (its email may already be on its way).\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"92d66503-40d3-4338-9cb5-8cdaf0f73c0f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"584d4a52-c91c-46cb-9b60-e319d64b841b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f096e4cd-6448-431f-9746-5b2bf4373ab2","name":"Remove Failed Email Campaign Recipients","request":{"name":"Remove Failed Email Campaign Recipients","description":{"content":"Bulk-remove all failed recipients (failed/bounced/complained) from an email\ncampaign.\n\nHard-deletes every failed-group row for this campaign and recomputes the\nemail campaign counters.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients","remove-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"bee0e0a6-d381-437c-a44d-b2661d97fdbf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients","remove-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"removed_count\": 8419,\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5804bc59-ca55-497b-b4fb-ed88a4531e8a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients","remove-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"65fa86d0-77dc-4290-95eb-50962c98b663","name":"Unsubscribe Email Campaign Recipient","request":{"name":"Unsubscribe Email Campaign Recipient","description":{"content":"Opt an email recipient's contact out of this campaign's lists.\n\nThis is DISTINCT from `DELETE /{campaign_id}/recipients/{recipient_id}`\n(\"Remove\"), which only deletes the per-recipient row and does NOT change\nsubscription state. This endpoint resolves the recipient's contact, computes\nthe campaign's originating list(s) (`campaign_lists` on the base campaign ∩\nthe contact's currently-subscribed lists) and opts the contact out of all of\nthem via the subscription chokepoint, writing the opt-out ledger with\ncampaign attribution (`method='manual'`). ``{campaign_id}`` is the\n``EmailCampaign.id`` (as elsewhere on this router).\n\n- Recipient (or its campaign) not found for this tenant -> 404\n- Recipient has no linked contact -> 422\n- Contact subscribed to none of the campaign's lists (or the campaign targets\n  no lists) -> 200 with an empty `unsubscribed_lists`\n- Contact already opted out of all of the campaign's lists -> 200 with\n  `already_unsubscribed: true`\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id","unsubscribe"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"91b4b511-55fb-4a10-bd43-4544cb8ac267","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id","unsubscribe"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"unsubscribed_lists\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"already_unsubscribed\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d9193ac9-9ad8-46d4-882d-4431ab0b1b68","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","recipients",":recipient_id","unsubscribe"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"recipient_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9f72e165-d046-46ee-a780-d29218e6e9dd","name":"Estimate Campaign Cost","request":{"name":"Estimate Campaign Cost","description":{"content":"Estimate campaign sending cost and check balance.\n\nReturns detailed cost breakdown including:\n- **recipient_count**: Number of email recipients\n- **cost_per_email**: Cost per email in cents\n- **total_cost**: Total cost in cents\n- **total_cost_eur**: Total cost formatted as EUR string (e.g., \"0.80\")\n- **current_balance**: Current account balance in cents\n- **current_balance_eur**: Balance formatted as EUR string\n- **sufficient_balance**: Whether the account has enough balance to send\n\nUse this endpoint before sending to verify costs and balance availability.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","email-campaigns",":campaign_id","estimate-cost"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5323b727-fe13-4afb-b2bf-c96f91b4b6f1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","estimate-cost"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"cost_per_email\": 0.08,\n  \"current_balance\": 5000,\n  \"current_balance_eur\": \"50.00\",\n  \"recipient_count\": 1000,\n  \"sufficient_balance\": true,\n  \"total_cost\": 80,\n  \"total_cost_eur\": \"0.80\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3dd88471-6cb1-43d2-b0d7-24c6357a2788","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-campaigns",":campaign_id","estimate-cost"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"campaign_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"f35091c6-ceb6-4996-b087-4d8a588ea1d8","name":"Email Connections","description":{"content":"Test and validate email server connections (SMTP/IMAP) for email integrations.","type":"text/plain"},"item":[{"id":"c0e9882f-2be5-423c-b399-b2cd5a295a65","name":"List Email Connections","request":{"name":"List Email Connections","description":{"content":"List all email connections for the tenant.\n\nReturns a unified view of both email_provider_configs (SendGrid, Mailgun, SES)\nand email_integrations (Gmail, SMTP/IMAP, Proxy).\n\nEach connection includes computed capabilities:\n- can_send_campaigns: Can send bulk email campaigns\n- can_receive_support: Can receive inbound support emails\n- can_reply_support: Can send replies to support emails\n\n**Required Scopes:** `email_integrations:read`","type":"text/plain"},"url":{"path":["api","v1","email-connections"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_inactive","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"bd7bd74e-2e03-4371-847f-baeddb4ce105","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections"],"host":["{{baseUrl}}"],"query":[{"key":"include_inactive","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"connections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 8481\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"709fb31a-79ae-4141-8214-e0b6b46504a6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-connections"],"host":["{{baseUrl}}"],"query":[{"key":"include_inactive","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"505ed47c-1cad-472c-a74d-2b29296d3201","name":"Get Campaign Provider","request":{"name":"Get Campaign Provider","description":{"content":"Get the current campaign provider for the tenant.\n\nReturns the email connection that is configured as the active campaign provider.\nOnly one connection can be the campaign provider at a time.\n\n**Required Scopes:** `email_integrations:read`","type":"text/plain"},"url":{"path":["api","v1","email-connections","campaign-provider"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ad058288-95c0-4b37-a1e4-5284f8390341","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections","campaign-provider"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"source_type\": \"integration\",\n  \"connection_type\": \"sendgrid_managed\",\n  \"is_active\": true,\n  \"connection_status\": \"string\",\n  \"can_send_campaigns\": true,\n  \"can_receive_support\": true,\n  \"can_reply_support\": false,\n  \"is_campaign_provider\": false,\n  \"created_at\": \"2015-09-30T02:26:03.152Z\",\n  \"is_support_default\": false,\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_mailbox_name\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"outbound_provider_name\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"any\",\n  \"has_received_email\": false,\n  \"proxy_address\": \"string\",\n  \"email_address\": \"string\",\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"key_status\": {\n    \"key_0\": 6483,\n    \"key_1\": 9176,\n    \"key_2\": 2783.013635168742,\n    \"key_3\": 6971,\n    \"key_4\": false\n  },\n  \"last_error\": \"string\",\n  \"updated_at\": \"1963-08-29T17:21:05.178Z\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b4e0b8da-a2ef-4bf0-b107-985a892e5228","name":"Get Email Connection","request":{"name":"Get Email Connection","description":{"content":"Get a single email connection by ID.\n\nSearches both email_provider_configs and email_integrations tables.\n\n**Required Scopes:** `email_integrations:read`","type":"text/plain"},"url":{"path":["api","v1","email-connections",":connection_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3d5a6c0a-6cd1-409f-8dd3-680055cb5bbb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"source_type\": \"integration\",\n  \"connection_type\": \"sendgrid_managed\",\n  \"is_active\": true,\n  \"connection_status\": \"string\",\n  \"can_send_campaigns\": true,\n  \"can_receive_support\": true,\n  \"can_reply_support\": false,\n  \"is_campaign_provider\": false,\n  \"created_at\": \"2015-09-30T02:26:03.152Z\",\n  \"is_support_default\": false,\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_mailbox_name\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"outbound_provider_name\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"any\",\n  \"has_received_email\": false,\n  \"proxy_address\": \"string\",\n  \"email_address\": \"string\",\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"key_status\": {\n    \"key_0\": 6483,\n    \"key_1\": 9176,\n    \"key_2\": 2783.013635168742,\n    \"key_3\": 6971,\n    \"key_4\": false\n  },\n  \"last_error\": \"string\",\n  \"updated_at\": \"1963-08-29T17:21:05.178Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"784ff806-6602-4d87-ae13-c575fb84578c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"54b4d43a-8110-4809-be61-608a34f68d2f","name":"Delete Email Connection","request":{"name":"Delete Email Connection","description":{"content":"Delete an email connection.\n\nSearches both email_provider_configs and email_integrations tables\nand deletes the matching connection.\n\n**WARNING:** This is a destructive operation. If you delete a campaign provider,\nyou will need to set a new one before sending campaigns.\n\n**Required Scopes:** `email_integrations:delete`","type":"text/plain"},"url":{"path":["api","v1","email-connections",":connection_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e4f18f96-7b52-4766-81f3-f78f5e59c037","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"5239d1c5-bd4e-41ea-9124-fc692ebff39d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4fd18844-4b31-4989-839d-b05d8437b87a","name":"Set Campaign Provider","request":{"name":"Set Campaign Provider","description":{"content":"Set this connection as the active campaign provider.\n\nOnly connections with can_send_campaigns=True can be set as campaign providers\n(SendGrid, Mailgun, SES).\n\nThis will unset any other campaign provider for the tenant.\nOnly one connection can be the campaign provider at a time.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-connections",":connection_id","set-campaign-provider"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH"},"response":[{"id":"aa6e43f6-366a-4858-9234-c58a55c2916a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id","set-campaign-provider"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"message\": \"string\",\n  \"connection\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_send_campaigns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_receive_support\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_reply_support\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_campaign_provider\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_support_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_forward_to\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"accepted_aliases\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_validation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_received_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d499e9b8-c124-40cd-8f50-8f23764ff0a0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id","set-campaign-provider"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"df625383-1c32-4aec-856b-e5efc84448c9","name":"Link Outbound Provider","request":{"name":"Link Outbound Provider","description":{"content":"Link an outbound provider to a proxy integration.\n\nThis allows proxy integrations (which can receive inbound emails)\nto send replies using a SendGrid, Mailgun, or SES provider.\n\nOnly proxy integrations can have linked outbound providers.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-connections",":connection_id","link-outbound"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"outbound_provider_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"072ad114-6706-46d1-88cb-c007dbc38c3a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id","link-outbound"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"outbound_provider_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"message\": \"string\",\n  \"connection\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_send_campaigns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_receive_support\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_reply_support\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_campaign_provider\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_support_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_forward_to\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"accepted_aliases\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_validation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_received_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"80bfe7c8-fb30-4234-a1d0-032fdd523077","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id","link-outbound"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"outbound_provider_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"863e270b-1515-4f9c-ae28-860669e9af38","name":"Unlink Outbound Provider","request":{"name":"Unlink Outbound Provider","description":{"content":"Unlink the outbound provider from a proxy integration.\n\nAfter unlinking, the proxy integration will no longer be able to send replies.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-connections",":connection_id","link-outbound"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"744a3be0-2bc9-45e8-b911-2bf8c57f4191","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id","link-outbound"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"message\": \"string\",\n  \"connection\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_send_campaigns\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_receive_support\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"can_reply_support\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_campaign_provider\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_support_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_forward_to\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"accepted_aliases\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_validation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_received_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5b7315d2-259e-4340-9802-dd7484898a5f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-connections",":connection_id","link-outbound"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"connection_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"8e56e3ad-f6c8-4ea5-96ca-c99c4f5f5a77","name":"Email Contacts","description":{"content":"Manage email-specific contact data including subscription preferences and email addresses.","type":"text/plain"},"item":[{"id":"a13995af-ee38-41bc-ae71-f368a3b2404e","name":"Import Email Contacts","request":{"name":"Import Email Contacts","description":{"content":"Import contacts from CSV file\n\n**Required Scopes:** `contacts:create`\n\nImports contacts from a CSV file. At least one of `email`, `phone`,\n`whatsapp_id`, `display_name`, `first_name`, or `last_name` is\nrequired per row. Optionally creates email subscriptions for contacts\nthat have an email address.\n\n**Supported columns (all optional except for the row anchor above):**\n\n| Column | Maps to | Normalization |\n|--------|---------|---------------|\n| `first_name` | `Contact.first_name` | trim |\n| `last_name` | `Contact.last_name` | trim |\n| `display_name` (alias: `name`) | `Contact.name` | trim; falls back to `\"{first} {last}\"` |\n| `email` | `Contact.email` + `ContactMethod` (EMAIL) | trim + lowercase |\n| `phone` | `Contact.phone` + `ContactMethod` (PHONE) | parsed via libphonenumber to E.164 |\n| `whatsapp_id` | `ContactMethod` (WHATSAPP_ID) | digits-only (strips `+`, spaces, formatting) |\n| `languages` | `Contact.languages` | comma-separated ISO 639-1 codes; quote the cell if more than one |\n| `birthday` | `Contact.birthday` | `YYYY-MM-DD` |\n| `tags` | `contact_tags` (many-to-many) | comma-separated; quote the cell; missing tags auto-created |\n| `linkedin` | `ContactMethod` (LINKEDIN) | trim |\n| `instagram_handle` | `ContactMethod` (INSTAGRAM_HANDLE) | trim; strips leading `@` |\n| `facebook` | `ContactMethod` (FACEBOOK) | trim |\n| `homepage` | `ContactMethod` (HOMEPAGE) | trim |\n| `custom_fields` | `Contact.custom_data` | JSON object string |\n\nHeader names are matched case-insensitively. Common aliases are\naccepted out-of-the-box: `firstname`/`given` → `first_name`,\n`lastname`/`surname` → `last_name`, `full name` → `display_name`,\n`lang`/`language` → `languages`, `dob`/`born` → `birthday`,\n`wa`/`wa_id` → `whatsapp_id`, `ig` → `instagram_handle`,\n`fb` → `facebook`, `website`/`url` → `homepage`, `labels` → `tags`.\n\n**CSV quoting:** Cells containing commas (e.g. multiple tags or\nlanguages) **must be quoted** per RFC 4180.\n\n**Example CSV:**\n```\nfirst_name,last_name,display_name,email,phone,whatsapp_id,languages,birthday,tags,linkedin,instagram_handle,facebook,homepage,custom_fields\nJohn,Doe,John Doe,john.doe@acme.com,+1 234 567 89,+1 234 567 89,\"en,de\",1990-04-12,\"vip,lead\",john-doe,@johndoe,john.doe.42,https://acme.com,\"{\"company\":\"Acme Corp\"}\"\nJane,Smith,,jane@acme.com,+49 30 12345678,4930123456789,de,,\"customer\",,,,,\n,,Acme Bot,,,,en,,\"bot\",,,,,\n```\n\n**Subscription creation:**\n- Set `create_subscription=true` to create email subscriptions\n- Requires `optin_confirmed=true` when creating subscriptions (GDPR/CAN-SPAM compliance)\n- Subscriptions only created for contacts with a valid email address\n- Use `list_ids` to subscribe to multiple lists (comma-separated)\n\n**Process:**\n1. Validates the CSV has at least one anchor column (see above).\n2. Validates and normalizes each row (phone → E.164, whatsapp_id\n   → digits-only, email → lowercase, birthday → date).\n3. Checks for duplicates by email and phone within tenant (subject\n   to the tenant's `duplicate_contact_mode`).\n4. Creates contacts and one `ContactMethod` row per non-empty\n   method field. Tags are looked up or auto-created within the\n   tenant and attached to the contact.\n5. Optionally creates email subscriptions and adds to specified lists.\n\n**Returns:**\n- Summary with total, imported, duplicates, invalid_rows, and errors","type":"text/plain"},"url":{"path":["api","v1","email-contacts","import"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"create_subscription","value":"false","description":"Create email subscriptions for imported contacts"},{"disabled":false,"key":"optin_confirmed","value":"false","description":"User confirms all contacts have valid opt-in consent"},{"disabled":false,"key":"list_id","value":"string","description":"Optional list ID to add imported contacts to"},{"disabled":false,"key":"list_ids","value":"string","description":"Comma-separated list IDs to subscribe contacts to"},{"disabled":false,"key":"identifiers_verified","value":"false","description":"Same as the identifiers_verified form field; either one enables it."}],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) CSV or XLSX file (.xlsx: first sheet, first row = headers). Anchor columns (at least one per row): contact_id, email, phone, whatsapp_id, display_name, first_name, last_name. Supports contact_id (UUID match target), first_name, last_name, display_name, email, phone, whatsapp_id, languages, birthday, tags, linkedin, instagram_handle, facebook, homepage, custom_fields."},{"key":"column_mapping","value":"string","type":"text","description":"JSON string mapping target fields to CSV column names, e.g. {\"email\": \"E-Mail\", \"name\": \"Full Name\", \"phone\": \"Telefon\"}. Per-EAV custom-field targets use the key \"custom_field:<field_definition_id>\"."},{"key":"duplicate_mode","value":"string","type":"text","description":"Override the tenant's duplicate_contact_mode for this import. Values: auto_merge, allow_duplicates, dont_allow_duplicates, update_existing. Omit to use the tenant default."},{"key":"update_field_mode","value":"string","type":"text","description":"Only used with duplicate_mode=update_existing. 'overwrite' (default) replaces standard + EAV custom fields from the CSV (blank cells never wipe); 'fill_empty' only populates empty fields. Values: overwrite, fill_empty."},{"key":"subscriptions","value":"string","type":"text","description":"JSON array of structured channel->list subscription targets, e.g. [{\"channel_type\":\"email\",\"list_id\":\"...\"},{\"channel_type\":\"whatsapp\",\"list_id\":\"...\"}]. A contact is subscribed to a target only if it has the channel's required method (email→email, sms→phone, whatsapp→whatsapp_id/phone); others are silently skipped. Supported channels: email, sms, whatsapp. Takes precedence over create_subscription. Requires optin_confirmed=true."},{"key":"delimiter","value":"string","type":"text","description":"CSV delimiter override. One of: ',' ';' tab '|'. Omit to auto-sniff."},{"key":"quotechar","value":"string","type":"text","description":"CSV quote character override (default '\"'). Omit to auto-detect."},{"key":"default_phone_region","value":"string","type":"text","description":"ISO-3166 alpha-2 region (e.g. 'DE') used to auto-prefix phone numbers lacking a '+' to E.164 (national '0175…' → '+49175…'). Omit to keep the lenient digit-prepend behaviour."},{"key":"apply_tag_ids","value":"string","type":"text","description":"Post-import action: JSON array of tag IDs (e.g. [\"id1\",\"id2\"]) applied to EVERY contact this import creates OR updates. Tag IDs must belong to the tenant (404 otherwise)."},{"key":"apply_custom_field","value":"string","type":"text","description":"Post-import action: JSON object {\"field_id\": \"...\", \"value\": ...} — the custom-field value is set (overwrite) on EVERY contact this import creates OR updates. The field must be an active custom field of the tenant; SELECT/MULTISELECT values are options-validated, DATE/DATETIME must be ISO."},{"key":"identifiers_verified","value":"false","type":"text","description":"Treat the imported phone numbers, email addresses and WhatsApp IDs as verified (you have confirmed the contacts control them). Stored with verified_source='import'. Default false: imported identifiers are unverified claims. Not available to OAuth apps."}]}},"response":[{"id":"e1bc374c-187e-4865-b627-027871c1569f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts","import"],"host":["{{baseUrl}}"],"query":[{"key":"create_subscription","value":"false"},{"key":"optin_confirmed","value":"false"},{"key":"list_id","value":"string"},{"key":"list_ids","value":"string"},{"key":"identifiers_verified","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) CSV or XLSX file (.xlsx: first sheet, first row = headers). Anchor columns (at least one per row): contact_id, email, phone, whatsapp_id, display_name, first_name, last_name. Supports contact_id (UUID match target), first_name, last_name, display_name, email, phone, whatsapp_id, languages, birthday, tags, linkedin, instagram_handle, facebook, homepage, custom_fields.","type":"text/plain"},"key":"file","type":"file"},{"description":{"content":"JSON string mapping target fields to CSV column names, e.g. {\"email\": \"E-Mail\", \"name\": \"Full Name\", \"phone\": \"Telefon\"}. Per-EAV custom-field targets use the key \"custom_field:<field_definition_id>\".","type":"text/plain"},"key":"column_mapping","value":"string","type":"text"},{"description":{"content":"Override the tenant's duplicate_contact_mode for this import. Values: auto_merge, allow_duplicates, dont_allow_duplicates, update_existing. Omit to use the tenant default.","type":"text/plain"},"key":"duplicate_mode","value":"string","type":"text"},{"description":{"content":"Only used with duplicate_mode=update_existing. 'overwrite' (default) replaces standard + EAV custom fields from the CSV (blank cells never wipe); 'fill_empty' only populates empty fields. Values: overwrite, fill_empty.","type":"text/plain"},"key":"update_field_mode","value":"string","type":"text"},{"description":{"content":"JSON array of structured channel->list subscription targets, e.g. [{\"channel_type\":\"email\",\"list_id\":\"...\"},{\"channel_type\":\"whatsapp\",\"list_id\":\"...\"}]. A contact is subscribed to a target only if it has the channel's required method (email→email, sms→phone, whatsapp→whatsapp_id/phone); others are silently skipped. Supported channels: email, sms, whatsapp. Takes precedence over create_subscription. Requires optin_confirmed=true.","type":"text/plain"},"key":"subscriptions","value":"string","type":"text"},{"description":{"content":"CSV delimiter override. One of: ',' ';' tab '|'. Omit to auto-sniff.","type":"text/plain"},"key":"delimiter","value":"string","type":"text"},{"description":{"content":"CSV quote character override (default '\"'). Omit to auto-detect.","type":"text/plain"},"key":"quotechar","value":"string","type":"text"},{"description":{"content":"ISO-3166 alpha-2 region (e.g. 'DE') used to auto-prefix phone numbers lacking a '+' to E.164 (national '0175…' → '+49175…'). Omit to keep the lenient digit-prepend behaviour.","type":"text/plain"},"key":"default_phone_region","value":"string","type":"text"},{"description":{"content":"Post-import action: JSON array of tag IDs (e.g. [\"id1\",\"id2\"]) applied to EVERY contact this import creates OR updates. Tag IDs must belong to the tenant (404 otherwise).","type":"text/plain"},"key":"apply_tag_ids","value":"string","type":"text"},{"description":{"content":"Post-import action: JSON object {\"field_id\": \"...\", \"value\": ...} — the custom-field value is set (overwrite) on EVERY contact this import creates OR updates. The field must be an active custom field of the tenant; SELECT/MULTISELECT values are options-validated, DATE/DATETIME must be ISO.","type":"text/plain"},"key":"apply_custom_field","value":"string","type":"text"},{"description":{"content":"Treat the imported phone numbers, email addresses and WhatsApp IDs as verified (you have confirmed the contacts control them). Stored with verified_source='import'. Default false: imported identifiers are unverified claims. Not available to OAuth apps.","type":"text/plain"},"key":"identifiers_verified","value":"false","type":"text"}]}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"message\": \"string\",\n  \"poll_url\": \"string\",\n  \"status\": \"queued\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5796ec06-8620-48ad-baad-577e57b99ca1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts","import"],"host":["{{baseUrl}}"],"query":[{"key":"create_subscription","value":"false"},{"key":"optin_confirmed","value":"false"},{"key":"list_id","value":"string"},{"key":"list_ids","value":"string"},{"key":"identifiers_verified","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) CSV or XLSX file (.xlsx: first sheet, first row = headers). Anchor columns (at least one per row): contact_id, email, phone, whatsapp_id, display_name, first_name, last_name. Supports contact_id (UUID match target), first_name, last_name, display_name, email, phone, whatsapp_id, languages, birthday, tags, linkedin, instagram_handle, facebook, homepage, custom_fields.","type":"text/plain"},"key":"file","type":"file"},{"description":{"content":"JSON string mapping target fields to CSV column names, e.g. {\"email\": \"E-Mail\", \"name\": \"Full Name\", \"phone\": \"Telefon\"}. Per-EAV custom-field targets use the key \"custom_field:<field_definition_id>\".","type":"text/plain"},"key":"column_mapping","value":"string","type":"text"},{"description":{"content":"Override the tenant's duplicate_contact_mode for this import. Values: auto_merge, allow_duplicates, dont_allow_duplicates, update_existing. Omit to use the tenant default.","type":"text/plain"},"key":"duplicate_mode","value":"string","type":"text"},{"description":{"content":"Only used with duplicate_mode=update_existing. 'overwrite' (default) replaces standard + EAV custom fields from the CSV (blank cells never wipe); 'fill_empty' only populates empty fields. Values: overwrite, fill_empty.","type":"text/plain"},"key":"update_field_mode","value":"string","type":"text"},{"description":{"content":"JSON array of structured channel->list subscription targets, e.g. [{\"channel_type\":\"email\",\"list_id\":\"...\"},{\"channel_type\":\"whatsapp\",\"list_id\":\"...\"}]. A contact is subscribed to a target only if it has the channel's required method (email→email, sms→phone, whatsapp→whatsapp_id/phone); others are silently skipped. Supported channels: email, sms, whatsapp. Takes precedence over create_subscription. Requires optin_confirmed=true.","type":"text/plain"},"key":"subscriptions","value":"string","type":"text"},{"description":{"content":"CSV delimiter override. One of: ',' ';' tab '|'. Omit to auto-sniff.","type":"text/plain"},"key":"delimiter","value":"string","type":"text"},{"description":{"content":"CSV quote character override (default '\"'). Omit to auto-detect.","type":"text/plain"},"key":"quotechar","value":"string","type":"text"},{"description":{"content":"ISO-3166 alpha-2 region (e.g. 'DE') used to auto-prefix phone numbers lacking a '+' to E.164 (national '0175…' → '+49175…'). Omit to keep the lenient digit-prepend behaviour.","type":"text/plain"},"key":"default_phone_region","value":"string","type":"text"},{"description":{"content":"Post-import action: JSON array of tag IDs (e.g. [\"id1\",\"id2\"]) applied to EVERY contact this import creates OR updates. Tag IDs must belong to the tenant (404 otherwise).","type":"text/plain"},"key":"apply_tag_ids","value":"string","type":"text"},{"description":{"content":"Post-import action: JSON object {\"field_id\": \"...\", \"value\": ...} — the custom-field value is set (overwrite) on EVERY contact this import creates OR updates. The field must be an active custom field of the tenant; SELECT/MULTISELECT values are options-validated, DATE/DATETIME must be ISO.","type":"text/plain"},"key":"apply_custom_field","value":"string","type":"text"},{"description":{"content":"Treat the imported phone numbers, email addresses and WhatsApp IDs as verified (you have confirmed the contacts control them). Stored with verified_source='import'. Default false: imported identifiers are unverified claims. Not available to OAuth apps.","type":"text/plain"},"key":"identifiers_verified","value":"false","type":"text"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"873e7cb2-8992-4144-960b-241c48c9173e","name":"Get Import Job Status","request":{"name":"Get Import Job Status","description":{"content":"Get the status/progress of an async contact import job.\n\n**Required Scopes:** `contacts:create`\n\nPoll this endpoint after POST /email-contacts/import. When ``status`` is\n``completed`` the full import summary is returned under ``summary``; when\n``failed`` see ``error_message``.","type":"text/plain"},"url":{"path":["api","v1","email-contacts","import",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5d451e10-9186-43d7-a693-0a26b6c07b93","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts","import",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"progress_percent\": 0,\n  \"total_items\": 0,\n  \"processed_items\": 0,\n  \"failed_items\": 0,\n  \"summary\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"error_message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"aa2fdd31-d6fe-4d4f-9b8c-a4b57c88599b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts","import",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1fd7209f-72e4-47b9-a752-d1bc293fdd1c","name":"Download Import Template","request":{"name":"Download Import Template","description":{"content":"Download a contact-import template (CSV or XLSX) with 1–2 example rows.\n\n**Required Scopes:** `contacts:create`\n\nThe headers are EXACTLY the contact-export format (auto-detected by the\nimporter with no manual mapping): a leading ``contact_id`` column (empty\nin the template — fill it to update an existing contact, leave it empty\nto create), the standard contact fields, and one ``custom.<key>`` column\nper active custom-field definition of the tenant.\n\nNote: ``telegram_id`` / ``messenger_id`` / ``instagram_id`` appear for\nexport parity but are ignored on import (channel-scoped platform IDs\ncannot be imported).","type":"text/plain"},"url":{"path":["api","v1","email-contacts","import","template"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"format","value":"csv","description":"Template file format: csv | xlsx"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"00b6cf9a-8cff-45b6-a781-b349c42f4e94","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts","import","template"],"host":["{{baseUrl}}"],"query":[{"key":"format","value":"csv"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"785ef528-1e4a-43d2-9464-a4b5b888cae3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts","import","template"],"host":["{{baseUrl}}"],"query":[{"key":"format","value":"csv"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"763f2296-4a12-4656-8da5-92f6af36d096","name":"Sniff Csv","request":{"name":"Sniff Csv","description":{"content":"Sniff a CSV/XLSX file's dialect and headers.\n\n**Required Scopes:** `contacts:create`\n\nReturns the detected delimiter, quote character, header column names,\nand a best-effort suggested phone region (from the tenant's\ncompany_country) so the frontend preview parser matches the backend\nimporter exactly. Does NOT import anything. For ``.xlsx`` uploads the\nheaders come from the first sheet's first row and ``delimiter``/\n``quotechar`` are reported as ``\",\"`` / ``'\"'`` (the dialect the\nbackend's xlsx→csv conversion emits).\n\n**Returns:** `{ delimiter, quotechar, headers, suggested_phone_region }`","type":"text/plain"},"url":{"path":["api","v1","email-contacts","sniff"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) CSV or XLSX file to inspect for delimiter/quotechar/headers"}]}},"response":[{"id":"b5669639-24c3-4926-9106-460151942e58","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts","sniff"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) CSV or XLSX file to inspect for delimiter/quotechar/headers","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"delimiter\": \"string\",\n  \"quotechar\": \"string\",\n  \"headers\": [\n    \"string\",\n    \"string\"\n  ],\n  \"suggested_phone_region\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"98cf944e-b385-4fbb-9046-8ee8e5388c70","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts","sniff"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) CSV or XLSX file to inspect for delimiter/quotechar/headers","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"25dc419e-80da-46d7-87f5-05e573ed60fe","name":"List Email Contacts","request":{"name":"List Email Contacts","description":{"content":"List email contacts with filters\n\n**Filters:**\n- subscription_status: pending, subscribed, unsubscribed\n- category: newsletter, promotions, updates, etc.\n- search: Search by email or name\n\n**Pagination:**\n- limit: Max results per page (1-100)\n- offset: Number of results to skip\n\n**🔐 Required Scopes:** `contacts:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-contacts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"subscription_status","value":"subscribed","description":"Filter by subscription status"},{"disabled":false,"key":"category","value":"string","description":"Filter by category"},{"disabled":false,"key":"search","value":"string","description":"Search by email or name"},{"disabled":false,"key":"limit","value":"50","description":"Maximum number of results"},{"disabled":false,"key":"offset","value":"0","description":"Pagination offset"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"50adeac6-1cba-4115-b3a0-ea6969365f91","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts"],"host":["{{baseUrl}}"],"query":[{"key":"subscription_status","value":"subscribed"},{"key":"category","value":"string"},{"key":"search","value":"string"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contacts\": [],\n  \"limit\": 50,\n  \"offset\": 0,\n  \"total\": 150\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a1cd9ee6-62ac-47cc-8bfe-3620125a9ba4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts"],"host":["{{baseUrl}}"],"query":[{"key":"subscription_status","value":"subscribed"},{"key":"category","value":"string"},{"key":"search","value":"string"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d7b36318-987c-451b-8fb1-c6f563c806e8","name":"Get Email Contact","request":{"name":"Get Email Contact","description":{"content":"Get email contact details by subscription ID\n\n**🔐 Required Scopes:** `contacts:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7a3f48ac-0c7a-487b-809c-d250bad2f062","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"email\": \"string\",\n  \"subscription_status\": \"pending\",\n  \"subscription_category\": \"string\",\n  \"opt_in_method\": \"manual\",\n  \"created_at\": \"1954-04-07T08:43:01.221Z\",\n  \"updated_at\": \"2013-01-02T09:14:58.579Z\",\n  \"name\": \"string\",\n  \"phone\": \"string\",\n  \"opt_in_confirmed_at\": \"1955-01-03T19:42:47.527Z\",\n  \"unsubscribed_at\": \"2026-09-03T18:49:58.540Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a2e1f64a-a5db-4a51-a3ec-55b286cdbb7f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9e1196dc-5ee0-403e-afcf-c81e137fb25d","name":"Update Email Contact","request":{"name":"Update Email Contact","description":{"content":"Update email contact subscription\n\n**Updatable fields:**\n- name\n- phone\n- subscription_status (pending, subscribed, unsubscribed)\n- subscription_category\n- unsubscribe_reason (when unsubscribing)\n\n**🔐 Required Scopes:** `contacts:update`\n","type":"text/plain"},"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"Jane Doe\",\n  \"subscription_status\": \"unsubscribed\",\n  \"unsubscribe_reason\": \"No longer interested\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1f0231d4-6e45-49b2-a8a7-bf4e2cd81bbf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"Jane Doe\",\n  \"subscription_status\": \"unsubscribed\",\n  \"unsubscribe_reason\": \"No longer interested\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"email\": \"string\",\n  \"subscription_status\": \"pending\",\n  \"subscription_category\": \"string\",\n  \"opt_in_method\": \"manual\",\n  \"created_at\": \"1954-04-07T08:43:01.221Z\",\n  \"updated_at\": \"2013-01-02T09:14:58.579Z\",\n  \"name\": \"string\",\n  \"phone\": \"string\",\n  \"opt_in_confirmed_at\": \"1955-01-03T19:42:47.527Z\",\n  \"unsubscribed_at\": \"2026-09-03T18:49:58.540Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8d4d5560-ea02-4651-9bff-94264c111dfa","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"Jane Doe\",\n  \"subscription_status\": \"unsubscribed\",\n  \"unsubscribe_reason\": \"No longer interested\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4c98736d-d1d2-4526-97fe-2fd4d3585152","name":"Delete Email Contact","request":{"name":"Delete Email Contact","description":{"content":"Delete email contact subscription\n\n**Note:** This permanently removes the email subscription.\nThe contact record itself is not deleted.\n\n**🔐 Required Scopes:** `contacts:delete`\n","type":"text/plain"},"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"c949572f-75a3-4cf5-9bb5-dd691344d535","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"8341dc9d-f287-4fa1-9ee7-f856ffa50333","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contacts",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"b50e28ea-4423-4b9d-af06-d01e3109e099","name":"Email Contents","description":{"content":"Create and edit email content blocks that populate layout template slots for campaigns.","type":"text/plain"},"item":[{"id":"bf15d97e-1c7c-4b89-b0a9-5831ae65e3b5","name":"Get Email Variables","request":{"name":"Get Email Variables","description":{"content":"Get all available email template variables organized by category.\n\nReturns a comprehensive list of variables that can be used in email templates:\n\n- **contact**: Recipient contact information (name, email, phone, etc.)\n- **company**: Your company/organization details (including brand colors)\n- **campaign**: Auto-filled campaign variables (unsubscribe link, etc.)\n- **system**: System variables (current year, date, etc.)\n- **custom_fields**: Your tenant's custom contact fields\n\n**Required Scopes:** `email:read`\n\n**Usage in templates:**\n```\nHello {{contact.name}}!\n\nWelcome to {{company.name}}.\n\n<div style=\"background: {{company.brand_color_primary}}\">...</div>\n\n(c) {{system.year}} All rights reserved.\n\n<a href=\"{{campaign.unsubscribe_url}}\">Unsubscribe</a>\n```\n\n**Custom variables:** You can use any `{{variable_name}}` in your template.\nValues are provided when creating email content from a layout.","type":"text/plain"},"url":{"path":["api","v1","email-contents","variables"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"40b61ff8-2f42-4549-a076-247feae76b31","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents","variables"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"categories\": {\n    \"contact\": {\n      \"description\": \"Recipient contact information\",\n      \"label\": \"Contact\",\n      \"variables\": [\n        {\n          \"description\": \"Contact's full name\",\n          \"example\": \"John Doe\",\n          \"name\": \"contact.name\",\n          \"preview_filled\": false,\n          \"required\": false\n        }\n      ]\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4cb63f95-6e91-4955-81ab-f412659d1e23","name":"Create Email Content","request":{"name":"Create Email Content","description":{"content":"Create a new email content with variable system.\n\n**Required Scopes:** `email:create`\n\nThe variable system supports 4 types of variables:\n- **Template variables**: Custom content (e.g., {{hero_title}}, {{cta_url}})\n- **Contact variables**: Auto-filled from contact data (e.g., {{contact.name}})\n- **Company variables**: Auto-filled from company data (e.g., {{company.name}})\n- **System variables**: Auto-filled by platform (e.g., {{system.year}})\n\n**Variable Naming Convention:**\n- Must use lowercase_with_underscores format\n- Can contain dots for nested properties (contact.field_name)\n- Examples: hero_title (valid), heroTitle (invalid), hero-title (invalid)\n\n**Features:**\n- Full MJML content with {{variable}} placeholders\n- Optional layout reference (analytics only, no FK constraint)\n- Variable values for form mode (optional)\n- Subject line supports {{variables}} for personalization\n- Variables are automatically extracted and validated","type":"text/plain"},"url":{"path":["api","v1","email-contents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"ai_generated\": false,\n  \"content_type\": \"html\",\n  \"description\": \"Welcome email for new subscribers (HTML)\",\n  \"mjml_source\": \"<mjml><mj-body><mj-text>Hello {{contact.name}}!</mj-text></mj-body></mjml>\",\n  \"name\": \"Welcome Email - HTML\",\n  \"preview_text\": \"Get started with your new account\",\n  \"subject_line\": \"Welcome to {{company.name}}, {{contact.name}}!\",\n  \"variable_values\": {\n    \"cta_url\": \"https://example.com/get-started\",\n    \"hero_title\": \"Welcome to Our Platform!\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2f031ba3-3079-469d-b6fa-982ff5343080","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"ai_generated\": false,\n  \"content_type\": \"html\",\n  \"description\": \"Welcome email for new subscribers (HTML)\",\n  \"mjml_source\": \"<mjml><mj-body><mj-text>Hello {{contact.name}}!</mj-text></mj-body></mjml>\",\n  \"name\": \"Welcome Email - HTML\",\n  \"preview_text\": \"Get started with your new account\",\n  \"subject_line\": \"Welcome to {{company.name}}, {{contact.name}}!\",\n  \"variable_values\": {\n    \"cta_url\": \"https://example.com/get-started\",\n    \"hero_title\": \"Welcome to Our Platform!\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_valid\": false,\n  \"version\": 2889,\n  \"created_at\": \"1953-07-07T10:42:57.041Z\",\n  \"updated_at\": \"1947-10-20T16:28:16.639Z\",\n  \"description\": \"string\",\n  \"content_type\": \"html\",\n  \"template_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"editor_type\": \"string\",\n  \"mjml_source\": \"string\",\n  \"compiled_html\": \"string\",\n  \"stripo_design_json\": \"string\",\n  \"text_body\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"variables_used\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer_mode\": \"string\",\n  \"ai_generated\": false,\n  \"ai_prompt\": \"string\",\n  \"ai_model_used\": \"string\",\n  \"ai_generation_cost_cents\": 4392,\n  \"is_system\": false,\n  \"validation_errors\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_by\": \"string\",\n  \"layout_template\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0d6b68c7-10ab-474e-b4cb-d34e701cead6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"ai_generated\": false,\n  \"content_type\": \"html\",\n  \"description\": \"Welcome email for new subscribers (HTML)\",\n  \"mjml_source\": \"<mjml><mj-body><mj-text>Hello {{contact.name}}!</mj-text></mj-body></mjml>\",\n  \"name\": \"Welcome Email - HTML\",\n  \"preview_text\": \"Get started with your new account\",\n  \"subject_line\": \"Welcome to {{company.name}}, {{contact.name}}!\",\n  \"variable_values\": {\n    \"cta_url\": \"https://example.com/get-started\",\n    \"hero_title\": \"Welcome to Our Platform!\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bb50c439-2678-4f33-a8d0-8b025b4e9fa6","name":"List Email Contents","request":{"name":"List Email Contents","description":{"content":"List email contents for the tenant with pagination.\n\n**Required Scopes:** `email:read`\n\n- Can filter by layout template ID (optional reference)\n- By default excludes hidden contents (use include_hidden=true to include)\n- Returns list without full MJML source (for performance)\n- Includes basic layout template info","type":"text/plain"},"url":{"path":["api","v1","email-contents"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"layout_id","value":"string","description":"Filter by layout template ID"},{"disabled":false,"key":"include_hidden","value":"false","description":"Include hidden/archived contents"},{"disabled":false,"key":"exclude_system","value":"false","description":"Exclude system templates"},{"disabled":false,"key":"exclude_doi","value":"true","description":"Exclude double opt-in templates (they have their own page)"},{"disabled":false,"key":"search","value":"string","description":"Case-insensitive search across name and subject_line"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4b982509-4abc-431f-a7d5-63fe2a5e8203","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"layout_id","value":"string"},{"key":"include_hidden","value":"false"},{"key":"exclude_system","value":"false"},{"key":"exclude_doi","value":"true"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"05bf7679-8671-40eb-8069-85211ac56abd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"layout_id","value":"string"},{"key":"include_hidden","value":"false"},{"key":"exclude_system","value":"false"},{"key":"exclude_doi","value":"true"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7b6f3176-df7b-463a-bb9a-2c7b96dab38c","name":"Get Email Content","request":{"name":"Get Email Content","description":{"content":"Get a specific email content with full details.\n\n**Required Scopes:** `email:read`","type":"text/plain"},"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"450e4fef-886d-4903-a5e3-dfbfbf59c4a8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_valid\": false,\n  \"version\": 2889,\n  \"created_at\": \"1953-07-07T10:42:57.041Z\",\n  \"updated_at\": \"1947-10-20T16:28:16.639Z\",\n  \"description\": \"string\",\n  \"content_type\": \"html\",\n  \"template_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"editor_type\": \"string\",\n  \"mjml_source\": \"string\",\n  \"compiled_html\": \"string\",\n  \"stripo_design_json\": \"string\",\n  \"text_body\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"variables_used\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer_mode\": \"string\",\n  \"ai_generated\": false,\n  \"ai_prompt\": \"string\",\n  \"ai_model_used\": \"string\",\n  \"ai_generation_cost_cents\": 4392,\n  \"is_system\": false,\n  \"validation_errors\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_by\": \"string\",\n  \"layout_template\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5a148165-3cb2-4289-8bb2-1ecd9d4b90f4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5f9442a9-7e17-4c10-ad0c-de783978b840","name":"Update Email Content","request":{"name":"Update Email Content","description":{"content":"Update email content with variable system.\n\n**Required Scopes:** `email:create`\n\n**Variable Replacement Examples:**\n- Template: {{hero_title}} -> \"Welcome to Our Amazing Platform\"\n- Contact: {{contact.name}} -> Actual contact's name at send time\n- Company: {{company.name}} -> Actual company name at send time\n- System: {{system.year}} -> Current year (e.g., 2025)\n\n**Features:**\n- Update MJML source, variable values, subject, etc.\n- Creates new version (increments version number)\n- Variables are automatically re-extracted and validated\n- Content changes will affect future campaigns using this content","type":"text/plain"},"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"mjml_source\": \"<mjml><mj-body><mj-text>Updated {{hero_title}}</mj-text></mj-body></mjml>\",\n  \"name\": \"Updated Content Name\",\n  \"subject_line\": \"New subject line with {{contact.name}}\",\n  \"variable_values\": {\n    \"hero_title\": \"New Title\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"793be79c-1df6-4c2b-8a8b-bf0925dbbe81","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"mjml_source\": \"<mjml><mj-body><mj-text>Updated {{hero_title}}</mj-text></mj-body></mjml>\",\n  \"name\": \"Updated Content Name\",\n  \"subject_line\": \"New subject line with {{contact.name}}\",\n  \"variable_values\": {\n    \"hero_title\": \"New Title\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_valid\": false,\n  \"version\": 2889,\n  \"created_at\": \"1953-07-07T10:42:57.041Z\",\n  \"updated_at\": \"1947-10-20T16:28:16.639Z\",\n  \"description\": \"string\",\n  \"content_type\": \"html\",\n  \"template_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"editor_type\": \"string\",\n  \"mjml_source\": \"string\",\n  \"compiled_html\": \"string\",\n  \"stripo_design_json\": \"string\",\n  \"text_body\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"variables_used\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer_mode\": \"string\",\n  \"ai_generated\": false,\n  \"ai_prompt\": \"string\",\n  \"ai_model_used\": \"string\",\n  \"ai_generation_cost_cents\": 4392,\n  \"is_system\": false,\n  \"validation_errors\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_by\": \"string\",\n  \"layout_template\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4f72bcdb-f78f-4c5f-b304-b858c11d51d2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"mjml_source\": \"<mjml><mj-body><mj-text>Updated {{hero_title}}</mj-text></mj-body></mjml>\",\n  \"name\": \"Updated Content Name\",\n  \"subject_line\": \"New subject line with {{contact.name}}\",\n  \"variable_values\": {\n    \"hero_title\": \"New Title\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fca4d339-0271-4043-8b61-5377b598fd74","name":"Delete Email Content","request":{"name":"Delete Email Content","description":{"content":"Delete email content.\n\n**Required Scopes:** `email:admin`\n\n- Email contents with campaigns referencing them cannot be deleted (409 Conflict)\n- Use this endpoint to clean up unused content","type":"text/plain"},"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"33eab1e2-069a-4f24-a06f-20c673953df3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"3033f3f6-299c-4fb4-a34c-444868750653","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b5f97737-0a7a-48a9-acde-1b89b97084c9","name":"Duplicate Email Content","request":{"name":"Duplicate Email Content","description":{"content":"Duplicate an email content.\n\n**Required Scopes:** `email:create`\n\nCreates a copy of the content with a new name. All content fields are copied\n(MJML, HTML, variables, subject line, preview text, etc.). The duplicate is\nalways a non-system, non-hidden content owned by the requesting tenant.","type":"text/plain"},"url":{"path":["api","v1","email-contents",":content_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"new_name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1a984b2f-1f48-4f4a-a159-f0129cc04662","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"new_name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"is_valid\": false,\n  \"version\": 2889,\n  \"created_at\": \"1953-07-07T10:42:57.041Z\",\n  \"updated_at\": \"1947-10-20T16:28:16.639Z\",\n  \"description\": \"string\",\n  \"content_type\": \"html\",\n  \"template_id\": \"string\",\n  \"subject_line\": \"string\",\n  \"preview_text\": \"string\",\n  \"from_name\": \"string\",\n  \"from_email\": \"string\",\n  \"editor_type\": \"string\",\n  \"mjml_source\": \"string\",\n  \"compiled_html\": \"string\",\n  \"stripo_design_json\": \"string\",\n  \"text_body\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"variables_used\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer_mode\": \"string\",\n  \"ai_generated\": false,\n  \"ai_prompt\": \"string\",\n  \"ai_model_used\": \"string\",\n  \"ai_generation_cost_cents\": 4392,\n  \"is_system\": false,\n  \"validation_errors\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_by\": \"string\",\n  \"layout_template\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1a192a8b-33ad-4dc5-8e2e-84c7290da557","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"new_name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6311e11e-c737-4d58-a8d9-4c379b11a1a8","name":"Preview Email Content","request":{"name":"Preview Email Content","description":{"content":"Preview email content with test variables.\n\n**Required Scopes:** `email:read`\n\n**Use Case:**\n- Test how email will look with specific contact/company data\n- Preview personalization before launching campaigns\n- Debug variable replacement issues\n\n**Example Request:**\n```json\n{\n  \"variables\": {\n    \"contact.name\": \"Jane Smith\",\n    \"contact.email\": \"jane@example.com\",\n    \"company.name\": \"Tech Solutions Inc\",\n    \"hero_title\": \"Exclusive Offer for You\",\n    \"cta_url\": \"https://example.com/special-offer\"\n  }\n}\n```\n\n**Features:**\n- Compiles content with provided variable values\n- Returns rendered HTML and subject line\n- Returns list of variables used in content\n- Useful for testing personalization before sending campaign","type":"text/plain"},"url":{"path":["api","v1","email-contents",":content_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"variables\": {\n    \"company\": {\n      \"name\": \"Acme Corp\"\n    },\n    \"contact\": {\n      \"email\": \"john@example.com\",\n      \"name\": \"John Doe\"\n    },\n    \"cta_url\": \"https://example.com/get-started\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8b1f810d-9cd3-43f9-a6b6-fa4b35d9fe4c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"variables\": {\n    \"company\": {\n      \"name\": \"Acme Corp\"\n    },\n    \"contact\": {\n      \"email\": \"john@example.com\",\n      \"name\": \"John Doe\"\n    },\n    \"cta_url\": \"https://example.com/get-started\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"subject_line\": \"string\",\n  \"variables_used\": [\n    \"string\",\n    \"string\"\n  ],\n  \"html_content\": \"string\",\n  \"text_content\": \"string\",\n  \"content_type\": \"html\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f876adb2-3943-4f6d-9cdd-e568a9287f5a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-contents",":content_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"content_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"variables\": {\n    \"company\": {\n      \"name\": \"Acme Corp\"\n    },\n    \"contact\": {\n      \"email\": \"john@example.com\",\n      \"name\": \"John Doe\"\n    },\n    \"cta_url\": \"https://example.com/get-started\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"2979b65c-0bce-41b7-8ed0-feb96c6e9e86","name":"Email Integrations","description":{"content":"Connect email providers (SendGrid, Mailgun, SMTP/IMAP, Gmail) for sending and receiving emails.","type":"text/plain"},"item":[{"id":"9a5fd278-c3c6-4071-bc7c-f925a565d100","name":"List Email Integrations","request":{"name":"List Email Integrations","description":{"content":"List all active (non-archived) email integrations for the tenant.\n\n**Required Scopes:** `email_integrations:read`\n\nNote: Archived integrations are excluded. Use GET /archived to view archived integrations.","type":"text/plain"},"url":{"path":["api","v1","email-integrations"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"integration_type","value":"gmail"},{"disabled":false,"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2109f9d9-f5b1-45c3-8a7b-61b825d02a2b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations"],"host":["{{baseUrl}}"],"query":[{"key":"integration_type","value":"gmail"},{"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"integration_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"oauth_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_host\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_port\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_username\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_use_tls\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_host\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_port\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_username\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_use_ssl\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_tenant_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_domain\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_sending_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_reputation_policy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"dns_verification_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_forward_to\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"accepted_aliases\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_validation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_signature\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"include_signature\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sync_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_sync_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"initial_sync_hours\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"integration_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"oauth_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_host\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_port\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_username\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"smtp_use_tls\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_host\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_port\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_username\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"imap_use_ssl\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_tenant_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_domain\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_sending_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_reputation_policy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"dns_verification_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_forward_to\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_mailbox_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"outbound_provider_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"accepted_aliases\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"recipient_validation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_signature\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"include_signature\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sync_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_sync_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"initial_sync_hours\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"32a17901-8988-4e96-a37a-3025cf451916","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations"],"host":["{{baseUrl}}"],"query":[{"key":"integration_type","value":"gmail"},{"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"49737053-dc17-471e-9dd2-0f8ceeaa6c32","name":"Create Email Integration","request":{"name":"Create Email Integration","description":{"content":"Create a new email integration.\n\n**Required Scopes:** `email_integrations:create`\n\nIntegration Types:\n- `gmail` - OAuth2 connection to Gmail\n- `smtp_imap` - Generic SMTP/IMAP server\n- `sendgrid` - Customer's own SendGrid account (deprecated for new integrations)\n- `ses_managed` - SendSeven managed SES (auto-setup: creates tenant, config set, starts domain verification)\n- `proxy` - Email forwarding via proxy address\n\nFor `ses_managed` integrations with `ses_domain` provided:\n- Automatically creates SES Configuration Set\n- Automatically starts domain verification\n- Returns DNS records that must be added to complete verification","type":"text/plain"},"url":{"path":["api","v1","email-integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"email_address\": \"eijrGKq-KCg0@gQJk.somk\",\n  \"integration_type\": \"sendgrid\",\n  \"smtp_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"imap_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"ses_domain\": \"string\",\n  \"ses_reputation_policy\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"recipient_validation_mode\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_signature\": \"string\",\n  \"include_signature\": true,\n  \"initial_sync_hours\": 3747\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"38256763-ba57-41ac-b16f-3e8b655f6bcc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"email_address\": \"eNoy@SDocxGs.mk\",\n  \"integration_type\": \"sendgrid\",\n  \"smtp_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"imap_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"ses_domain\": \"string\",\n  \"ses_reputation_policy\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"recipient_validation_mode\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_signature\": \"string\",\n  \"include_signature\": true,\n  \"initial_sync_hours\": 3314\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"integration_type\": \"string\",\n  \"is_active\": false,\n  \"connection_status\": \"string\",\n  \"created_at\": \"1962-01-21T20:46:42.910Z\",\n  \"email_address\": \"string\",\n  \"oauth_email\": \"string\",\n  \"ses_tenant_name\": \"string\",\n  \"ses_configuration_set\": \"string\",\n  \"ses_domain\": \"string\",\n  \"ses_reputation_policy\": \"string\",\n  \"dns_verification_status\": \"string\",\n  \"dns_records\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"setup_message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ddaa4fc0-5b91-4c1b-ad50-0b082c551585","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"email_address\": \"eNoy@SDocxGs.mk\",\n  \"integration_type\": \"sendgrid\",\n  \"smtp_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"imap_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"ses_domain\": \"string\",\n  \"ses_reputation_policy\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"recipient_validation_mode\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_signature\": \"string\",\n  \"include_signature\": true,\n  \"initial_sync_hours\": 3314\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c278f115-a11f-4b8b-9bd2-063bb7925d92","name":"List Archived Email Integrations","request":{"name":"List Archived Email Integrations","description":{"content":"List all archived email integrations for the tenant.\n\n**Required Scopes:** `email_integrations:read`\n\nReturns integrations that have been deleted (soft-deleted/archived).\nUseful for audit purposes and billing history.\n\nNote: Sensitive credentials are cleared when an integration is archived.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","archived"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"integration_type","value":"gmail"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3b39d88e-0792-422d-85bf-05d7b4310616","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","archived"],"host":["{{baseUrl}}"],"query":[{"key":"integration_type","value":"gmail"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"integration_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"oauth_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_archived\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_domain\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"integration_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"oauth_email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"connection_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_archived\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ses_domain\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"proxy_address\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"c792a42e-49aa-4c40-a5d6-2830ca4ad11c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","archived"],"host":["{{baseUrl}}"],"query":[{"key":"integration_type","value":"gmail"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cf76c2a2-228c-4477-a851-a6d4ff7b3888","name":"Get Email Integration","request":{"name":"Get Email Integration","description":{"content":"Get a specific email integration by ID.\n\n**Required Scopes:** `email_integrations:read`","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"02571f61-3d18-4576-aba5-501e330cc69a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"integration_type\": \"string\",\n  \"is_active\": false,\n  \"connection_status\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_address\": \"string\",\n  \"oauth_email\": \"string\",\n  \"last_error\": \"string\",\n  \"last_error_at\": \"2003-10-06T22:35:02.062Z\",\n  \"smtp_host\": \"string\",\n  \"smtp_port\": 6077,\n  \"smtp_username\": \"string\",\n  \"smtp_use_tls\": false,\n  \"imap_host\": \"string\",\n  \"imap_port\": 6565,\n  \"imap_username\": \"string\",\n  \"imap_use_ssl\": false,\n  \"ses_tenant_name\": \"string\",\n  \"ses_domain\": \"string\",\n  \"ses_sending_status\": \"string\",\n  \"ses_reputation_policy\": \"string\",\n  \"dns_verification_status\": \"string\",\n  \"proxy_address\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_mailbox_name\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"any\",\n  \"default_signature\": \"string\",\n  \"include_signature\": false,\n  \"sync_enabled\": false,\n  \"last_sync_at\": \"2009-03-29T17:59:09.812Z\",\n  \"initial_sync_hours\": 8542\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"87a91580-d1c2-48db-aeeb-235f7268bddc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b77c7ae8-ff60-47e1-91f1-3317312993a0","name":"Update Email Integration","request":{"name":"Update Email Integration","description":{"content":"Update an existing email integration.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"is_active\": false,\n  \"smtp_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"imap_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"default_signature\": \"string\",\n  \"include_signature\": true,\n  \"sync_enabled\": true,\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"string\",\n  \"initial_sync_hours\": 5338\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"60692b47-bbfb-4d55-8a03-627f2e898780","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"smtp_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"imap_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"default_signature\": \"string\",\n  \"include_signature\": true,\n  \"sync_enabled\": false,\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"string\",\n  \"initial_sync_hours\": 2500\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"integration_type\": \"string\",\n  \"is_active\": false,\n  \"connection_status\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_address\": \"string\",\n  \"oauth_email\": \"string\",\n  \"last_error\": \"string\",\n  \"last_error_at\": \"2003-10-06T22:35:02.062Z\",\n  \"smtp_host\": \"string\",\n  \"smtp_port\": 6077,\n  \"smtp_username\": \"string\",\n  \"smtp_use_tls\": false,\n  \"imap_host\": \"string\",\n  \"imap_port\": 6565,\n  \"imap_username\": \"string\",\n  \"imap_use_ssl\": false,\n  \"ses_tenant_name\": \"string\",\n  \"ses_domain\": \"string\",\n  \"ses_sending_status\": \"string\",\n  \"ses_reputation_policy\": \"string\",\n  \"dns_verification_status\": \"string\",\n  \"proxy_address\": \"string\",\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_mailbox_name\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"any\",\n  \"default_signature\": \"string\",\n  \"include_signature\": false,\n  \"sync_enabled\": false,\n  \"last_sync_at\": \"2009-03-29T17:59:09.812Z\",\n  \"initial_sync_hours\": 8542\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c177873d-3c76-4184-b582-95184983599e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"is_active\": true,\n  \"smtp_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"imap_config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"default_signature\": \"string\",\n  \"include_signature\": true,\n  \"sync_enabled\": false,\n  \"proxy_forward_to\": \"string\",\n  \"outbound_mailbox_id\": \"string\",\n  \"outbound_provider_id\": \"string\",\n  \"accepted_aliases\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"recipient_validation_mode\": \"string\",\n  \"initial_sync_hours\": 2500\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"59363431-3994-4102-9179-32cee816f75b","name":"Delete Email Integration","request":{"name":"Delete Email Integration","description":{"content":"Archive (soft-delete) an email integration with full resource cleanup.\n\n**Required Scopes:** `email_integrations:delete`\n\nThis archives the integration and cleans up all associated resources:\n- For SES managed integrations: removes domain identity from AWS SES\n  (only if no other active integration uses the same domain), deletes\n  the SES configuration set, and removes the SES tenant\n- Deletes DNS verification records from the database\n- Deactivates proxy mappings for proxy integrations\n- Clears sensitive credentials (OAuth tokens, passwords, API keys)\n- Marks the integration as archived with timestamp\n- Preserves the integration record for billing history and audit purposes\n\nThe integration will no longer appear in the list or be usable.\nAfter archiving, the same domain can be re-added to a new integration.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"87b9116d-e679-492e-80e0-b31c24c6829b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"integration_id\": \"string\",\n  \"message\": \"string\",\n  \"archived_at\": \"1963-08-23T11:32:32.132Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"39d9b8c9-e6bd-4d3d-bcc3-e36a06886065","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0d9a48ac-5261-4ca3-9648-f8da6f5be840","name":"Test Email Integration","request":{"name":"Test Email Integration","description":{"content":"Test the connection for an email integration.\n\n**Required Scopes:** `email_integrations:update`\n\nReturns connection status and any errors.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"1d1e63f8-3a9e-42e6-ac93-3930e1e7f420","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"integration_id\": \"string\",\n  \"success\": false,\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"smtp\": {\n    \"key_0\": 7434\n  },\n  \"imap\": {\n    \"key_0\": 1822,\n    \"key_1\": true\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"70337db5-7b0d-40c5-920c-f7fff770815f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b54f09fd-94ad-4750-8004-4d7a2d3a9c73","name":"Sync Email Integration","request":{"name":"Sync Email Integration","description":{"content":"Trigger a manual sync for an email integration.\n\n**Required Scopes:** `email_integrations:update`\n\nThis is typically used for SMTP/IMAP or Gmail integrations to fetch new emails.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"52da2591-0fb8-439d-9239-8f0141e7b64d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"integration_id\": \"string\",\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"emails_found\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a2c24175-8bf1-4a92-9a36-c3e9055b57be","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"477335e4-078c-4214-be92-2b7f1525b178","name":"Get Dns Records","request":{"name":"Get Dns Records","description":{"content":"Get DNS records required for domain verification.\n\n**Required Scopes:** `email_integrations:read`\n\nReturns DKIM, SPF, and DMARC records that need to be set in DNS.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","dns-records"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6b6299f6-72ee-4dd1-8a21-4d39b70833b4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","dns-records"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"record_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"record_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"record_value\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_check_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"record_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"record_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"record_value\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_check_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"9a3ce21d-af56-4316-b371-fe4e3929e28e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","dns-records"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"58f3fea1-8890-48df-93a5-06b0df778e7f","name":"Verify Dns","request":{"name":"Verify Dns","description":{"content":"Trigger DNS verification check.\n\n**Required Scopes:** `email_integrations:update`\n\nChecks if the required DNS records have been properly configured.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","verify-dns"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"bffa4868-ba27-4e5f-a5bc-f29adfb28243","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","verify-dns"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"integration_id\": \"string\",\n  \"status\": \"string\",\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6632fe4d-6e10-4059-9de0-b638db244033","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","verify-dns"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"633582ca-06e2-4896-b21e-7a85c191d78d","name":"Add Domain","request":{"name":"Add Domain","description":{"content":"Start domain verification for an SES managed integration.\n\n**Required Scopes:** `email_integrations:update`\n\nThis:\n1. Creates an email identity for the domain in SES\n2. Returns DNS records (DKIM, SPF, DMARC) that need to be added\n3. Associates the domain with the SES tenant once verified\n\nThe customer must add these DNS records to their domain before emails can be sent.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","add-domain"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"domain\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0bed3008-cea1-40e5-a3b4-71e407c7c0a0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","add-domain"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"domain\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"domain\": \"string\",\n  \"verification_status\": \"string\",\n  \"verified\": true,\n  \"dkim_status\": \"UNKNOWN\",\n  \"dns_records\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b4ebc699-ef1d-4354-a11e-565336dcba16","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","add-domain"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"domain\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ef44e86b-1a62-4c97-a7e1-a53312c972df","name":"Get Domain Status","request":{"name":"Get Domain Status","description":{"content":"Check domain verification status for an SES managed integration.\n\n**Required Scopes:** `email_integrations:read`\n\nReturns the current verification status and DNS records.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","domain-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"649c6d98-b6bd-44ac-a0c6-f70840a2a848","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","domain-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"domain\": \"string\",\n  \"verification_status\": \"string\",\n  \"verified\": true,\n  \"dkim_status\": \"UNKNOWN\",\n  \"dns_records\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"41c60343-1acb-4972-8597-f4bf4b9ad454","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","domain-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cd9c3570-4637-4fb2-acdc-97c57962c43d","name":"Pause Sending","request":{"name":"Pause Sending","description":{"content":"Pause email sending for an SES managed integration.\n\n**Required Scopes:** `email_integrations:update`\n\nThis manually pauses the SES tenant, stopping all email sending.\nUse this if you need to temporarily disable sending (e.g., suspected abuse).","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","pause-sending"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"4facd49d-8f45-4913-bd3f-665603155d8b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","pause-sending"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"integration_id\": \"string\",\n  \"ses_tenant_name\": \"string\",\n  \"sending_status\": \"string\",\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"05e2f152-f8c4-43b1-8a5a-107f351d9a7e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","pause-sending"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"88a1cfb8-5276-4e5b-8bc2-6d6f3792c55f","name":"Resume Sending","request":{"name":"Resume Sending","description":{"content":"Resume email sending for an SES managed integration.\n\n**Required Scopes:** `email_integrations:update`\n\nThis resumes sending for a paused SES tenant.\n\nNote: If the tenant was auto-paused due to reputation issues,\nyou should address the underlying problem before resuming.","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","resume-sending"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"152d88ff-df22-4e42-8345-3a7e138a36a9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","resume-sending"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"integration_id\": \"string\",\n  \"ses_tenant_name\": \"string\",\n  \"sending_status\": \"string\",\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f650bbe1-f341-49f0-8278-7977abbc7269","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","resume-sending"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f17e2b3f-ed87-429c-8860-ef1f4bbc1e16","name":"Add Gmail Alias","request":{"name":"Add Gmail Alias","description":{"content":"Add a Gmail send-as alias.\n\nAdds the alias email and creates a corresponding mailbox.\nThe alias MUST be configured in Gmail under Settings > Accounts and Import > Send mail as,\notherwise Gmail will silently send from the primary email instead.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","test-alias"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"alias_email\": \"zat@rnzNzwnXXKSpBsNvXXBP.fnh\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b6546e43-35f6-439b-b5ad-0a156245108b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","test-alias"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"alias_email\": \"zat@rnzNzwnXXKSpBsNvXXBP.fnh\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"alias_email\": \"string\",\n  \"message\": \"string\",\n  \"mailbox_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ae0a0c16-d85f-44bb-96ee-a15992bf9e4a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","test-alias"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"alias_email\": \"zat@rnzNzwnXXKSpBsNvXXBP.fnh\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"41396991-cc34-4416-8ab4-9354da3fdb4a","name":"Remove Gmail Alias","request":{"name":"Remove Gmail Alias","description":{"content":"Remove a verified Gmail send-as alias.\n\nDeactivates the corresponding mailbox (preserves history).\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","aliases",":alias_email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"alias_email","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"91e4dcaf-1d69-44be-a7e6-54d382dd85bb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","aliases",":alias_email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"alias_email","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"311cf9e5-a145-41d0-8384-817e859d26d0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","aliases",":alias_email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"alias_email","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"edce4f83-3f59-4e85-abdc-69295b2ecdc5","name":"Sync Gmail Integration","request":{"name":"Sync Gmail Integration","description":{"content":"Trigger a manual sync for a Gmail integration.\n\n**Required Scopes:** `email_integrations:update`\n\nThis will:\n1. Fetch new messages from Gmail since last sync\n2. Process and store them in the system\n3. Update the integration's history ID","type":"text/plain"},"url":{"path":["api","v1","email-integrations",":integration_id","gmail","sync"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"full_sync","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"8d7461f5-ff9a-472e-8c73-54d5c29bfc6c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","gmail","sync"],"host":["{{baseUrl}}"],"query":[{"key":"full_sync","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"integration_id\": \"string\",\n  \"status\": \"string\",\n  \"message\": \"string\",\n  \"messages_synced\": 0,\n  \"new_history_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"71ae5d01-34f0-40de-83ba-03c5b61d2c36","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations",":integration_id","gmail","sync"],"host":["{{baseUrl}}"],"query":[{"key":"full_sync","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"integration_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3f8afeae-9296-4af7-b1a5-38e1d6874f3a","name":"Get email thread for conversation","request":{"name":"Get email thread for conversation","description":{"content":"Get the full email thread for a conversation.\n\n**Required Scopes:** `email_integrations:read` OR `conversations:read`\n\nReturns all email messages associated with this conversation, including:\n- RFC 5322 headers (Message-ID, In-Reply-To, References)\n- From, To, CC, BCC addresses\n- Subject and body (text + signed URL for HTML)\n- Attachments with download URLs\n- Thread relationships for proper email client display\n\nThis is the primary endpoint for the email thread view in Conversations UI.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","email-thread"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f5589521-213d-405c-93bf-1b9ceea64576","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","email-thread"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"string\",\n  \"thread_id\": \"string\",\n  \"subject\": \"string\",\n  \"messages\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total_messages\": 0,\n  \"original_from\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"original_to\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"original_cc\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1f1c6552-729f-473a-9f05-5ccba9874608","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","email-thread"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"71f15b0e-2e43-4e8e-8bf5-fb66f03401ba","name":"Compose and send new outbound email","request":{"name":"Compose and send new outbound email","description":{"content":"Compose and send a new outbound email (not a reply).\n\n**Required Scopes:** `email_integrations:update` OR `messages:create`\n\nUse this endpoint for initiating new email conversations where there's\nno existing message to reply to.\n\nFeatures:\n- Plain text and/or HTML body support (rich text)\n- Subject line required\n- CC/BCC support\n- Attachment support via attachment IDs\n\nThe email is sent via the conversation's associated email integration.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","compose-email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"subject\": \"s\",\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"to_email\": \"ybV0K0Lzg9oIx@SmVgNM.to\",\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sender_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f9daab57-3b26-4a8a-b01b-4bb267c725f7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","compose-email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"subject\": \"string\",\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"to_email\": \"j-1MDQ6hkp5y-ZY@wcgehqgKjOVjAvWP.agb\",\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sender_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"email_message_id\": \"string\",\n  \"status\": \"string\",\n  \"message_id\": \"string\",\n  \"sent_at\": \"string\",\n  \"to_emails\": [\n    \"string\",\n    \"string\"\n  ],\n  \"cc_emails\": [\n    \"string\",\n    \"string\"\n  ],\n  \"bcc_emails\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5fb65083-7d50-4964-97ab-45695058bcb0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","compose-email"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"subject\": \"string\",\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"to_email\": \"j-1MDQ6hkp5y-ZY@wcgehqgKjOVjAvWP.agb\",\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sender_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a8762b5f-9668-47a1-adc3-b941024fa0d9","name":"Compose and send email from an EmailContent template","request":{"name":"Compose and send email from an EmailContent template","description":{"content":"Compose and send an outbound email using a pre-designed EmailContent template.\n\n**Required Scopes:** `email_integrations:update` OR `messages:create`\n\nThe template is compiled with the conversation contact's data (name, email, phone)\nsubstituted into template variables. Optional variable_overrides allow the caller\nto override or supplement template variable values before compilation.\n\nUses the same 3-tier sending identity resolution as compose-email:\nmailbox -> integration -> channel.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","compose-from-template"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_content_id\": \"string\",\n  \"variable_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"include_signature\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3fa2102f-9813-48e7-9803-9029cc7249c9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","compose-from-template"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_content_id\": \"string\",\n  \"variable_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"include_signature\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"email_message_id\": \"string\",\n  \"status\": \"string\",\n  \"message_id\": \"string\",\n  \"sent_at\": \"string\",\n  \"to_emails\": [\n    \"string\",\n    \"string\"\n  ],\n  \"cc_emails\": [\n    \"string\",\n    \"string\"\n  ],\n  \"bcc_emails\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"81275e16-eeb6-4d84-96ea-f5fe3147bce8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","compose-from-template"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_content_id\": \"string\",\n  \"variable_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"include_signature\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"520be88b-0241-4740-bf0b-7c69d1ae87fc","name":"Preview an EmailContent template with conversation contact data","request":{"name":"Preview an EmailContent template with conversation contact data","description":{"content":"Preview an EmailContent template compiled with the conversation contact's data.\n\n**Required Scopes:** `email_integrations:read`\n\nReturns the fully compiled HTML and subject line with all template variables\nreplaced using the actual contact data from the conversation. Also resolves\nthe sending identity so the frontend can display the from address.\n\nUse this endpoint to show a live preview before sending via compose-from-template.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","preview-template"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_content_id\": \"string\",\n  \"variable_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"890f6224-7cf2-4a61-8b3a-36458b1e1794","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","preview-template"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_content_id\": \"string\",\n  \"variable_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"subject_line\": \"string\",\n  \"html_content\": \"string\",\n  \"text_content\": \"string\",\n  \"from_email\": \"string\",\n  \"from_name\": \"string\",\n  \"variables_used\": [\n    \"string\",\n    \"string\"\n  ],\n  \"content_type\": \"html\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1b877a29-ac7d-45aa-944b-2f77b68d198e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","preview-template"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_content_id\": \"string\",\n  \"variable_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_3\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d141a1af-d073-4a8a-8275-2f73ec532ec3","name":"Get email summary for conversation sidebar","request":{"name":"Get email summary for conversation sidebar","description":{"content":"Get email summary for the conversation sidebar.\n\n**Required Scopes:** `email_integrations:read` OR `conversations:read`\n\nReturns:\n- Whether this conversation has email messages\n- Total message and attachment counts\n- Latest email information\n- All unique participants in the thread\n- Email integration type and ID\n\nThis is a lightweight endpoint for displaying email info in the sidebar.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","email-summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5b4bbc95-75f5-4c94-a7da-ad6eb53ddca2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","email-summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"string\",\n  \"subject\": \"\",\n  \"participant_email\": \"\",\n  \"participant_name\": \"string\",\n  \"integration_email\": \"\",\n  \"thread_count\": 0,\n  \"total_attachments\": 0,\n  \"first_message_at\": \"string\",\n  \"last_message_at\": \"string\",\n  \"participants\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"cc_participants\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"labels\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_unread\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"dfdcd6a8-bcc3-47f1-ac5e-9600e3a27ed3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","conversations",":conversation_id","email-summary"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"38ddbf5d-07fb-4aa0-90b3-c8f8244914f0","name":"Get single email message detail","request":{"name":"Get single email message detail","description":{"content":"Get detailed information for a single email message.\n\n**Required Scopes:** `email_integrations:read`\n\nReturns full email details including:\n- All headers\n- Full text body\n- Signed URL for HTML body\n- Attachment list with download URLs\n\nUse this endpoint when expanding a collapsed email in the thread view.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"df015889-7654-4b19-a4f3-59e2893012cb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"string\",\n  \"from_email\": \"string\",\n  \"status\": \"string\",\n  \"created_at\": \"string\",\n  \"message_id\": \"string\",\n  \"thread_id\": \"string\",\n  \"from_name\": \"string\",\n  \"to_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_to\": \"string\",\n  \"subject\": \"string\",\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"raw_headers\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"error_message\": \"string\",\n  \"sent_at\": \"string\",\n  \"received_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e172f819-add1-42f2-8aed-c8bd483710ec","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"56cc5073-a389-4a09-82fc-f9f91dc79565","name":"Delete Email Message","request":{"name":"Delete Email Message","description":{"content":"Permanently delete an email message.\n\nThis action cannot be undone. Consider using hide instead for soft-delete.\n\n**Required Scopes:** `email_integrations:delete`","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"6223a4a1-dcaa-4759-8458-33f88fbbaabe","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"b4402380-ba6e-444e-b1bd-c0ae3a6ca087","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e4b2865f-0e99-4418-b83c-6b863335da39","name":"Get all messages in email thread","request":{"name":"Get all messages in email thread","description":{"content":"Get all messages in the same thread as the specified email message.\n\n**Required Scopes:** `email_integrations:read`\n\nThis loads the full email chain using the thread_id from the specified message.\nUseful for viewing the complete thread context.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","thread"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"01df30d7-c81e-4e30-a72a-a614cc20f7e6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","thread"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"string\",\n  \"thread_id\": \"string\",\n  \"subject\": \"string\",\n  \"messages\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total_messages\": 0,\n  \"original_from\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"original_to\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"original_cc\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4501a4b9-e16b-4126-8785-2cfa5ffcae7a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","thread"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"428b5e60-de31-492e-8d1f-fde3f283859d","name":"Send email reply","request":{"name":"Send email reply","description":{"content":"Send a reply to an email message.\n\n**Required Scopes:** `email_integrations:update` OR `messages:create`\n\nFeatures:\n- Plain text and/or HTML body support (rich text)\n- CC/BCC handling with option to preserve original CCs\n- Reply-all option\n- Attachment support via attachment IDs\n- Automatic subject line (Re: original) with override option\n\nThe reply is queued for sending via the configured email integration.\nThread headers (In-Reply-To, References) are automatically set.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"preserve_cc\": true,\n  \"attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"to_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_all\": false,\n  \"subject_override\": \"string\",\n  \"include_thread_history\": true,\n  \"sender_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"34c1e864-79b0-46c1-90ea-00aadeaa7bf4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"preserve_cc\": true,\n  \"attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"to_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_all\": false,\n  \"subject_override\": \"string\",\n  \"include_thread_history\": true,\n  \"sender_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"email_message_id\": \"string\",\n  \"status\": \"string\",\n  \"message_id\": \"string\",\n  \"sent_at\": \"string\",\n  \"to_emails\": [\n    \"string\",\n    \"string\"\n  ],\n  \"cc_emails\": [\n    \"string\",\n    \"string\"\n  ],\n  \"bcc_emails\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b3cae6a1-3b47-42e4-918f-38d692cb9feb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","reply"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text_body\": \"string\",\n  \"html_body\": \"string\",\n  \"cc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"bcc_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"preserve_cc\": true,\n  \"attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"to_emails\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"reply_all\": false,\n  \"subject_override\": \"string\",\n  \"include_thread_history\": true,\n  \"sender_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7067b60d-5926-4ee9-bc18-423f44e9a6bc","name":"Upload inline image for rich text email","request":{"name":"Upload inline image for rich text email","description":{"content":"Upload an inline image for use in rich text email replies.\n\n**Required Scopes:** `email_integrations:update`\n\nReturns:\n- attachment_id: ID to reference in reply\n- content_id: CID for use in HTML (e.g., `<img src=\"cid:xxx\">`)\n- url: Signed URL for preview in composer\n\nUsage in HTML body:\n```html\n<img src=\"cid:{{content_id}}\" alt=\"Inline image\">\n```\n\nThen include the attachment_id in the reply request's attachment_ids array.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","inline-images"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"filename","value":""},{"disabled":false,"key":"content_type","value":""}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"47ee6db1-26db-4a81-aa71-36b218d0e979","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","inline-images"],"host":["{{baseUrl}}"],"query":[{"key":"filename","value":""},{"key":"content_type","value":""}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"attachment_id\": \"string\",\n  \"content_id\": \"string\",\n  \"url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0025701f-ba09-4386-af6c-e334f5d209d1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","inline-images"],"host":["{{baseUrl}}"],"query":[{"key":"filename","value":""},{"key":"content_type","value":""}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0ac159e7-07b5-4627-9bc5-14f1ff817deb","name":"Upload inline image via multipart form","request":{"name":"Upload inline image via multipart form","description":{"content":"Upload an inline image via multipart form data.\n\n**Required Scopes:** `email_integrations:update`\n\nThis is an alternative to the raw body upload endpoint,\ndesigned for standard HTML file upload forms.\n\nForm fields:\n- file: The image file\n\nReturns same response as /inline-images endpoint.","type":"text/plain"},"url":{"path":["api","v1","email-integrations","inline-images","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"612679d6-bf0c-4497-b58c-64f8de8db07a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","inline-images","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"attachment_id\": \"string\",\n  \"content_id\": \"string\",\n  \"url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d59cc3fd-a55b-4ff3-aa9e-69d47524cb1d","name":"Hide Email Message","request":{"name":"Hide Email Message","description":{"content":"Hide (soft-delete/archive) an email message.\n\nThe message will be hidden from the conversation view but kept in the database.\nUse unhide to restore it.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","hide"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"0cbc70e1-bd09-4bad-82cd-e209c2076cb1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","hide"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"string\",\n  \"status\": \"string\",\n  \"from_email\": \"string\",\n  \"created_at\": \"1952-11-11T10:49:21.589Z\",\n  \"from_name\": \"string\",\n  \"subject\": \"string\",\n  \"is_hidden\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8976eebf-f830-4567-b285-69fbb4e863cb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","hide"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d39936a0-afdd-4f87-b909-146aa8ae69a2","name":"Unhide Email Message","request":{"name":"Unhide Email Message","description":{"content":"Unhide (restore) a hidden email message.\n\n**Required Scopes:** `email_integrations:update`","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","unhide"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"0604bbce-8b82-4ae2-8e24-22262e4aef45","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","unhide"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"string\",\n  \"status\": \"string\",\n  \"from_email\": \"string\",\n  \"created_at\": \"1952-11-11T10:49:21.589Z\",\n  \"from_name\": \"string\",\n  \"subject\": \"string\",\n  \"is_hidden\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2a77c6df-8f00-4527-9fac-fa8310d94712","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","unhide"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"79e86d85-5f10-4210-b682-2ca8b99ba9ff","name":"Block Sender From Message","request":{"name":"Block Sender From Message","description":{"content":"Block the sender of an email message.\n\nAdds the sender's email address to the blacklist. Future emails from this\nsender will be skipped during polling.\n\nOptionally hide all existing messages from this sender.\n\nThe whole contact (all channels) is blocked only when the address clearly\nbelongs to exactly one contact AND the caller also has `contacts:update`;\notherwise only the address itself is blocked.\n\n**Required Scopes:** `email_integrations:update` (+ `contacts:update` for\na contact-level block)","type":"text/plain"},"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","block-sender"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reason\": \"string\",\n  \"hide_existing_messages\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"96278563-c6a6-4f75-b38d-f69735690e14","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","block-sender"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reason\": \"string\",\n  \"hide_existing_messages\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email_address\": \"string\",\n  \"created_at\": \"1997-12-18T10:52:12.359Z\",\n  \"blocked_by_user_id\": \"string\",\n  \"reason\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6425a78d-e39f-4b84-8fb2-89a9ba83a54d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","email-messages",":email_message_id","block-sender"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reason\": \"string\",\n  \"hide_existing_messages\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"07c868aa-f1d7-4e1f-a23c-a21a03f0e470","name":"List Blocked Senders","request":{"name":"List Blocked Senders","description":{"content":"List all blocked email senders.\n\n**Required Scopes:** `email_integrations:read`","type":"text/plain"},"url":{"path":["api","v1","email-integrations","blocked-senders"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ab0cccf6-607e-4709-bce7-7e67f69215ad","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a735c671-c6d1-487b-aa2b-4c6d40d63ded","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2a26f8c1-fe12-473b-b56a-35a69a9fe286","name":"Block Sender Directly","request":{"name":"Block Sender Directly","description":{"content":"Directly block an email address.\n\nAdds the email address to the blacklist. Future emails from this\nsender will be skipped during polling.\n\nThe whole contact (all channels) is blocked only when the address clearly\nbelongs to exactly one contact AND the caller also has `contacts:update`;\notherwise only the address itself is blocked.\n\n**Required Scopes:** `email_integrations:update` (+ `contacts:update` for\na contact-level block)","type":"text/plain"},"url":{"path":["api","v1","email-integrations","blocked-senders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_address\": \"2PKQ29zQIPU0qO@eQmWNrAAWRx.hedb\",\n  \"reason\": \"string\",\n  \"hide_existing_messages\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"deaca099-b912-420b-a204-19e271a0f9b1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_address\": \"2PKQ29zQIPU0qO@eQmWNrAAWRx.hedb\",\n  \"reason\": \"string\",\n  \"hide_existing_messages\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email_address\": \"string\",\n  \"created_at\": \"1997-12-18T10:52:12.359Z\",\n  \"blocked_by_user_id\": \"string\",\n  \"reason\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a948612a-f3e6-4416-95c8-409b8bc77d48","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email_address\": \"2PKQ29zQIPU0qO@eQmWNrAAWRx.hedb\",\n  \"reason\": \"string\",\n  \"hide_existing_messages\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cc677f69-d65c-4fde-842f-c16f15e7a4b3","name":"Unblock Sender","request":{"name":"Unblock Sender","description":{"content":"Unblock an email sender (remove from blacklist).\n\nUnblocks the owning contact as a whole only when the caller also has\n`contacts:update`; otherwise only the address itself is unblocked.\n\n**Required Scopes:** `email_integrations:update` (+ `contacts:update` for\na contact-level unblock)","type":"text/plain"},"url":{"path":["api","v1","email-integrations","blocked-senders",":email_address"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_address","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"585a5ffd-f83c-47e7-95f6-f350c3724164","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders",":email_address"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_address","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e738a58b-22bf-45e8-913b-bfa1cb2fe5f8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders",":email_address"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_address","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"314bd6c1-3433-4223-b06d-4637613b4d64","name":"Get Blocked Sender","request":{"name":"Get Blocked Sender","description":{"content":"Get details of a specific blocked sender.\n\n**Required Scopes:** `email_integrations:read`","type":"text/plain"},"url":{"path":["api","v1","email-integrations","blocked-senders",":email_address"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_address","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1b493bf8-41bd-4cfd-841c-16d7b3ed99ba","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders",":email_address"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_address","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email_address\": \"string\",\n  \"created_at\": \"1997-12-18T10:52:12.359Z\",\n  \"blocked_by_user_id\": \"string\",\n  \"reason\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"14687546-ae94-415b-8c0e-78fe7e3933aa","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-integrations","blocked-senders",":email_address"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_address","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"7ebf5064-fa69-4897-b27a-e15cc10b27e5","name":"Email Mailboxes","description":{"content":"Manage connected email mailboxes used for sending and receiving email conversations.","type":"text/plain"},"item":[{"id":"9e4e90c3-8199-4b91-bf1f-742edb72fd78","name":"List Email Mailboxes","request":{"name":"List Email Mailboxes","description":{"content":"List email mailboxes for the tenant.\n\nReturns active mailboxes by default.  Set `active_only=false` to include\ndeactivated mailboxes.\n\nOptional filters:\n- `purpose=campaign` - only mailboxes with can_send_campaigns=True\n- `purpose=support` - only mailboxes with can_send_support=True\n- `for_user_id` - only mailboxes the given user can access (all + specific with user in list)\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","email-mailboxes"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"},{"disabled":false,"key":"active_only","value":"true","description":"Only return active mailboxes"},{"disabled":false,"key":"purpose","value":"string","description":"Filter by capability: 'campaign' (can_send_campaigns=True) or 'support' (can_send_support=True)"},{"disabled":false,"key":"for_user_id","value":"string","description":"Filter to mailboxes accessible by this user (respects access_mode)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"79c34b5d-4192-4590-88a0-e8c3115bda7d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-mailboxes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"active_only","value":"true"},{"key":"purpose","value":"string"},{"key":"for_user_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"21bfac78-7cfe-4f87-9092-d4e146f8db8f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-mailboxes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"active_only","value":"true"},{"key":"purpose","value":"string"},{"key":"for_user_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6f503abf-4bb8-4c7c-9c3f-cb35a6999ed9","name":"Create Email Mailbox","request":{"name":"Create Email Mailbox","description":{"content":"Create a new email mailbox.\n\nEither `email_integration_id` or `email_provider_config_id` must be set\n(but not both).  If `is_default` is True the previous default mailbox\nfor the tenant is unset.\n\n**Required Scopes:** `channels:create`","type":"text/plain"},"url":{"path":["api","v1","email-mailboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"access_mode\": \"all\",\n  \"can_send_campaigns\": false,\n  \"can_send_support\": true,\n  \"email_address\": \"support@company.com\",\n  \"email_integration_id\": \"integration-uuid\",\n  \"is_default\": true,\n  \"name\": \"Support\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"55079d7b-e178-40f4-b5c3-a7720884331b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-mailboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"access_mode\": \"all\",\n  \"can_send_campaigns\": false,\n  \"can_send_support\": true,\n  \"email_address\": \"support@company.com\",\n  \"email_integration_id\": \"integration-uuid\",\n  \"is_default\": true,\n  \"name\": \"Support\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"email_address\": \"string\",\n  \"is_active\": true,\n  \"is_default\": false,\n  \"updated_at\": \"string\",\n  \"display_name\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"integration_name\": \"string\",\n  \"provider_name\": \"string\",\n  \"can_send_campaigns\": false,\n  \"can_send_support\": true,\n  \"include_thread_history\": true,\n  \"access_mode\": \"all\",\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"998dbea9-12b5-4e7e-a53b-c16d5ad1be65","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-mailboxes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"access_mode\": \"all\",\n  \"can_send_campaigns\": false,\n  \"can_send_support\": true,\n  \"email_address\": \"support@company.com\",\n  \"email_integration_id\": \"integration-uuid\",\n  \"is_default\": true,\n  \"name\": \"Support\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"24310d1e-29da-48ae-b1d8-a0ade80d89fa","name":"Get Email Mailbox","request":{"name":"Get Email Mailbox","description":{"content":"Get a single email mailbox by ID.\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"abe24b89-eb13-45c2-ade7-848c6e8eb928","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"email_address\": \"string\",\n  \"is_active\": true,\n  \"is_default\": false,\n  \"updated_at\": \"string\",\n  \"display_name\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"integration_name\": \"string\",\n  \"provider_name\": \"string\",\n  \"can_send_campaigns\": false,\n  \"can_send_support\": true,\n  \"include_thread_history\": true,\n  \"access_mode\": \"all\",\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d9a79e56-4a78-4dae-bc0b-56aba5444474","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dacb2c3e-bdd9-4656-8907-cf8fd487d0d6","name":"Update Email Mailbox","request":{"name":"Update Email Mailbox","description":{"content":"Update an email mailbox.\n\nWhen setting `is_default=true`, the previous default mailbox for the\ntenant is automatically unset.\n\n**Required Scopes:** `channels:update`","type":"text/plain"},"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"access_mode\": \"specific\",\n  \"allowed_user_ids\": [\n    \"user-uuid-1\",\n    \"user-uuid-2\"\n  ],\n  \"can_send_campaigns\": true,\n  \"is_default\": true,\n  \"name\": \"Updated Support\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"79dfd0f8-fe0a-4963-8515-0fdc51b28610","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"access_mode\": \"specific\",\n  \"allowed_user_ids\": [\n    \"user-uuid-1\",\n    \"user-uuid-2\"\n  ],\n  \"can_send_campaigns\": true,\n  \"is_default\": true,\n  \"name\": \"Updated Support\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"email_address\": \"string\",\n  \"is_active\": true,\n  \"is_default\": false,\n  \"updated_at\": \"string\",\n  \"display_name\": \"string\",\n  \"email_integration_id\": \"string\",\n  \"email_provider_config_id\": \"string\",\n  \"integration_name\": \"string\",\n  \"provider_name\": \"string\",\n  \"can_send_campaigns\": false,\n  \"can_send_support\": true,\n  \"include_thread_history\": true,\n  \"access_mode\": \"all\",\n  \"allowed_user_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"aef8dc98-27bf-4ecc-a04b-44b7a326871c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"access_mode\": \"specific\",\n  \"allowed_user_ids\": [\n    \"user-uuid-1\",\n    \"user-uuid-2\"\n  ],\n  \"can_send_campaigns\": true,\n  \"is_default\": true,\n  \"name\": \"Updated Support\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d71d4e13-ef01-4bf8-86ec-d262530b7d17","name":"Delete Email Mailbox","request":{"name":"Delete Email Mailbox","description":{"content":"Delete an email mailbox (soft-delete: sets is_active=False).\n\n**Required Scopes:** `channels:delete`","type":"text/plain"},"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b8fe8df2-43dd-4ee4-af2f-9914eced009b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d7610cf7-2c4b-4861-aff0-0d7e1347ae93","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-mailboxes",":mailbox_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"mailbox_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"17fc24fb-f389-4b9e-af20-2d0c8e3e1f1c","name":"Email Providers","description":{"content":"Manage email delivery provider configurations and DNS verification for custom domains.","type":"text/plain"},"item":[{"id":"62f41b6a-b872-4eb1-b914-ecdb4e414a43","name":"List Providers","request":{"name":"List Providers","description":{"content":"List all active (non-archived) email provider configurations for the tenant","type":"text/plain"},"url":{"path":["api","v1","email-providers"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4ca3282f-4978-457c-bb22-6671af1030fb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"provider_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"api_key_preview\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"webhook_configured\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"provider_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"api_key_preview\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"webhook_configured\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7703226d-002c-4e09-ad34-d6d064c0f30c","name":"Create Provider","request":{"name":"Create Provider","description":{"content":"Create a new email provider configuration\n\n- Encrypts API key before storage\n- If set as default, removes default flag from other providers\n- Validates provider configuration","type":"text/plain"},"url":{"path":["api","v1","email-providers"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"api_key\": \"SG.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"config\": {\n    \"from_email\": \"marketing@example.com\",\n    \"from_name\": \"Example Company\"\n  },\n  \"is_active\": true,\n  \"is_default\": true,\n  \"name\": \"Marketing Emails\",\n  \"provider_type\": \"sendgrid\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b5384ff1-6687-4982-9881-b87d7957c260","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"api_key\": \"SG.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"config\": {\n    \"from_email\": \"marketing@example.com\",\n    \"from_name\": \"Example Company\"\n  },\n  \"is_active\": true,\n  \"is_default\": true,\n  \"name\": \"Marketing Emails\",\n  \"provider_type\": \"sendgrid\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"provider_type\": \"sendgrid_managed\",\n  \"name\": \"string\",\n  \"api_key_preview\": \"string\",\n  \"is_active\": false,\n  \"is_default\": true,\n  \"created_at\": \"2024-10-07T19:05:31.006Z\",\n  \"updated_at\": \"2014-04-17T14:17:04.579Z\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"key_status\": {\n    \"key_0\": 6076\n  },\n  \"webhook_configured\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d242ec5e-4bb9-450e-90a9-533099a470f5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"api_key\": \"SG.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n  \"config\": {\n    \"from_email\": \"marketing@example.com\",\n    \"from_name\": \"Example Company\"\n  },\n  \"is_active\": true,\n  \"is_default\": true,\n  \"name\": \"Marketing Emails\",\n  \"provider_type\": \"sendgrid\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a9deb9b4-3d68-4ab8-a8fd-8927f60b4217","name":"List Archived Providers","request":{"name":"List Archived Providers","description":{"content":"List all archived email provider configurations for the tenant (admin/audit)\n\nReturns archived providers with metadata but without sensitive credentials.\nUseful for audit trails and reviewing historical configurations.\n\n**Required Scopes:** `settings:read`","type":"text/plain"},"url":{"path":["api","v1","email-providers","archived"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"602daa86-f1aa-48db-8200-e7dd1d9543e4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers","archived"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"provider_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"webhook_configured\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"provider_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_default\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_domains\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"webhook_configured\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e9415845-8dc4-4753-a63a-93af3191662e","name":"Get Provider","request":{"name":"Get Provider","description":{"content":"Get a specific email provider configuration (excludes archived)\n\n**🔐 Required Scopes:** `settings:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"318b0d29-1e2a-4554-81b6-7f604d3dab73","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"provider_type\": \"sendgrid_managed\",\n  \"name\": \"string\",\n  \"api_key_preview\": \"string\",\n  \"is_active\": false,\n  \"is_default\": true,\n  \"created_at\": \"2024-10-07T19:05:31.006Z\",\n  \"updated_at\": \"2014-04-17T14:17:04.579Z\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"key_status\": {\n    \"key_0\": 6076\n  },\n  \"webhook_configured\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9a6a3d55-aa1c-4c9b-99ff-e98f26083e31","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f1bcddea-923c-4619-bd4c-29aa2ca54870","name":"Update Provider","request":{"name":"Update Provider","description":{"content":"Update email provider configuration\n\n- Can update name, API key, config, active status, default status\n- If setting as default, removes default flag from other providers\n\n**🔐 Required Scopes:** `settings:update`\n","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"api_key\": \"string\",\n  \"config\": {\n    \"key_0\": 8896,\n    \"key_1\": false,\n    \"key_2\": 959\n  },\n  \"is_active\": true,\n  \"is_default\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"05f91fb8-3344-42dc-8628-162e3bc1dd46","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"api_key\": \"string\",\n  \"config\": {\n    \"key_0\": 8896,\n    \"key_1\": false,\n    \"key_2\": 959\n  },\n  \"is_active\": true,\n  \"is_default\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"provider_type\": \"sendgrid_managed\",\n  \"name\": \"string\",\n  \"api_key_preview\": \"string\",\n  \"is_active\": false,\n  \"is_default\": true,\n  \"created_at\": \"2024-10-07T19:05:31.006Z\",\n  \"updated_at\": \"2014-04-17T14:17:04.579Z\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"key_status\": {\n    \"key_0\": 6076\n  },\n  \"webhook_configured\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9fb60330-baf6-4d6f-9c7a-d6081c161e2d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"api_key\": \"string\",\n  \"config\": {\n    \"key_0\": 8896,\n    \"key_1\": false,\n    \"key_2\": 959\n  },\n  \"is_active\": true,\n  \"is_default\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5c6d6776-f080-4e82-8b5b-cf16641c6c0e","name":"Delete Provider","request":{"name":"Delete Provider","description":{"content":"Archive (soft-delete) email provider configuration\n\n- Archives the provider instead of hard deleting for audit trail\n- Clears sensitive credentials (API keys) while preserving metadata\n- If this was the default provider, unsets the default flag\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"02c11dd0-d161-4548-9ad3-27f75e282ec3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"message\": \"string\",\n  \"id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"29713156-608e-4aa8-afb5-2dbe5ae40c88","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bfae9c50-6ece-43ab-9877-2dda8a5a7a12","name":"Test Provider","request":{"name":"Test Provider","description":{"content":"Send a test email to verify provider configuration\n\n- Validates API credentials by actually sending an email\n- Returns success/failure status and provider message ID","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"body\": \"This is a test email.\",\n  \"subject\": \"Test Email\",\n  \"to_email\": \"test@example.com\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6122da47-4913-4d2b-98df-9074b7888d00","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"body\": \"This is a test email.\",\n  \"subject\": \"Test Email\",\n  \"to_email\": \"test@example.com\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Test email sent successfully\",\n  \"provider_message_id\": \"msg-abc123\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0dc4d44a-197e-4100-b682-466a2883f291","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"body\": \"This is a test email.\",\n  \"subject\": \"Test Email\",\n  \"to_email\": \"test@example.com\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a2718d3d-0030-47bb-850a-8e8477b3c009","name":"Set Default Provider","request":{"name":"Set Default Provider","description":{"content":"Set a provider as the default for the tenant\n\n- Removes default flag from all other providers\n- Sets this provider as default\n\n**🔐 Required Scopes:** `settings:update`\n","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id","set-default"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH"},"response":[{"id":"ec2b382d-0a1f-4946-9bd0-366d8f61ee28","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","set-default"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"provider_type\": \"sendgrid_managed\",\n  \"name\": \"string\",\n  \"api_key_preview\": \"string\",\n  \"is_active\": false,\n  \"is_default\": true,\n  \"created_at\": \"2024-10-07T19:05:31.006Z\",\n  \"updated_at\": \"2014-04-17T14:17:04.579Z\",\n  \"config\": {\n    \"key_0\": \"string\"\n  },\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"key_status\": {\n    \"key_0\": 6076\n  },\n  \"webhook_configured\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"72a7104a-836e-4f92-90a0-42ad3e84df01","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","set-default"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"87e07614-c744-4b9f-a197-4a4a0700b94c","name":"Configure Webhooks","request":{"name":"Configure Webhooks","description":{"content":"Auto-configure SendGrid event webhooks via API\n\n- Sets up event webhook URL with tenant_id and config_id parameters\n- Enables all event types (delivered, open, click, bounce, spam_report, etc.)\n- Only works for SendGrid providers\n\nReturns:\n    - success: bool\n    - webhook_url: configured webhook URL\n    - message: status message\n    - current_settings: current webhook configuration (if successful)","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id","configure-webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"c8652595-3dc0-44cb-8a9b-0dceb0e29497","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","configure-webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"current_settings\": {\n    \"enabled\": true,\n    \"url\": \"https://api.example.com/webhooks/sendgrid/email\"\n  },\n  \"message\": \"SendGrid event webhooks configured successfully\",\n  \"success\": true,\n  \"webhook_url\": \"https://api.example.com/webhooks/sendgrid/email?tenant_id=xxx&config_id=yyy\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"10e367cf-97c4-4367-81b4-4767f288839a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","configure-webhooks"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"522a37ed-ff35-4823-bac9-e01f94fe20f0","name":"Refresh Verified Domains","request":{"name":"Refresh Verified Domains","description":{"content":"Refresh the list of verified domains from the provider API.\n\nFetches current verified domains and updates provider config.\nSupports SendGrid and Mailgun. For Mailgun a domain-scoped SENDING key\n401s on /v3/domains and the live list cannot be read — in that case the\nstored verified_domains degrades to the manually-configured domain.","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id","refresh-domains"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a11543f6-8d45-4454-a112-07e4e007022a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","refresh-domains"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"domain_count\": 2,\n  \"success\": true,\n  \"updated_at\": \"2024-01-15T10:30:00Z\",\n  \"verified_domains\": [\n    \"example.com\",\n    \"mail.example.com\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e7e5e5a0-0cfc-474b-909e-6aeb7c41adec","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","refresh-domains"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f3f16ee7-53b7-4ddd-9f8d-577177544e1c","name":"Get Webhook Settings","request":{"name":"Get Webhook Settings","description":{"content":"Get current SendGrid webhook settings for a provider\n\nOnly works for SendGrid providers.\n\n**🔐 Required Scopes:** `settings:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-providers",":provider_id","webhook-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a2a42e9b-37de-43c3-90b6-470b30833bbe","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","webhook-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"expected_webhook_url\": \"https://api.example.com/api/v1/webhooks/sendgrid/email?tenant_id=xxx&config_id=yyy\",\n  \"settings\": {\n    \"bounce\": true,\n    \"click\": true,\n    \"delivered\": true,\n    \"enabled\": true,\n    \"open\": true,\n    \"url\": \"https://api.example.com/webhooks/sendgrid/email\"\n  },\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0c63bfce-579c-4232-a38c-f85330d4efa9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-providers",":provider_id","webhook-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"provider_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"25fe8dbb-a65e-484e-9753-c50cf52cb2a1","name":"Email Settings","description":{"content":"Configure email-specific settings including sender defaults, reply-to addresses, and footer preferences.","type":"text/plain"},"item":[{"id":"2eb378c4-88f7-403f-a804-1082f0980a2c","name":"Get Email Settings","request":{"name":"Get Email Settings","description":{"content":"Get tenant email settings.\n\nReturns configured settings or defaults if not yet configured.\n\n**Database:** PRIMARY (tenants table), SHARD (email_provider_configs)\n\n**🔐 Required Scopes:** `settings:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8944679d-fb31-4ef3-898d-0dd8ebbd4e62","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"default_from_name\": \"string\",\n  \"default_from_email\": \"8802ZZR7J4tuhF@JfGPoCMjJuGVSPAyZHulJax.glnh\",\n  \"default_reply_to\": \"nShvtNJuBkd9@JTGMkURXxO.njg\",\n  \"double_opt_in_enabled\": true,\n  \"default_double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"footer_mode\": \"both\",\n  \"unsubscribe_link_format\": \"\",\n  \"has_email_provider\": false,\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4819477d-635d-46c7-bc33-66c1e2048f05","name":"Reset Email Settings","request":{"name":"Reset Email Settings","description":{"content":"Reset email settings to defaults (clears all custom settings).\n\n**Database:** PRIMARY (tenants table)\n\n**🔐 Required Scopes:** `settings:admin`\n","type":"text/plain"},"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"bc6e84e6-4dd4-4e9b-93e9-d2f790024342","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Email settings reset to defaults\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c29cac08-39d1-4ca7-8e86-faf9f88352f4","name":"Update Email Settings","request":{"name":"Update Email Settings","description":{"content":"Update tenant email settings (partial update).\n\nOnly updates provided fields. Unspecified fields remain unchanged.\n\n**Database:** PRIMARY (tenants table)\n\n**Example:**\n```json\n{\n    \"default_from_name\": \"ACME Corp\",\n    \"default_from_email\": \"hello@acme.com\",\n    \"double_opt_in_enabled\": true\n}\n```\n\n**🔐 Required Scopes:** `settings:update`\n","type":"text/plain"},"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"default_from_name\": \"string\",\n  \"default_from_email\": \"F223-6mvEtRuWb@NlTFcutOC.fy\",\n  \"default_reply_to\": \"JXf1R@iFuN.hr\",\n  \"double_opt_in_enabled\": true,\n  \"default_double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"footer_mode\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"92e0b5b6-c5eb-4784-b4f1-9a70e3c70a4e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"default_from_name\": \"string\",\n  \"default_from_email\": \"F223-6mvEtRuWb@NlTFcutOC.fy\",\n  \"default_reply_to\": \"JXf1R@iFuN.hr\",\n  \"double_opt_in_enabled\": true,\n  \"default_double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"footer_mode\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"default_from_name\": \"string\",\n  \"default_from_email\": \"8802ZZR7J4tuhF@JfGPoCMjJuGVSPAyZHulJax.glnh\",\n  \"default_reply_to\": \"nShvtNJuBkd9@JTGMkURXxO.njg\",\n  \"double_opt_in_enabled\": true,\n  \"default_double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"footer_mode\": \"both\",\n  \"unsubscribe_link_format\": \"\",\n  \"has_email_provider\": false,\n  \"verified_domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e7a345fa-4a9e-4ec5-9c29-87d597672eb4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"default_from_name\": \"string\",\n  \"default_from_email\": \"F223-6mvEtRuWb@NlTFcutOC.fy\",\n  \"default_reply_to\": \"JXf1R@iFuN.hr\",\n  \"double_opt_in_enabled\": true,\n  \"default_double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"footer_mode\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2d219245-a038-49b2-8443-444679016bb8","name":"Validate Compliance Footer","request":{"name":"Validate Compliance Footer","description":{"content":"Validate compliance footer HTML without saving\n\nUse this endpoint to preview validation results in the template builder.\n\n**Request Body:**\n```json\n{\n    \"html\": \"<p>Footer HTML with {{unsubscribe_link}} and {{company.address}}</p>\"\n}\n```\n\n**Response:**\n```json\n{\n    \"is_valid\": true,\n    \"errors\": [],\n    \"warnings\": [\"Removed <style> tag\"],\n    \"sanitized_html\": \"<p>Footer HTML...</p>\"\n}\n```\n\n**🔐 Required Scopes:** `settings:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-settings","validate-footer"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": 9778.01557165092\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"675feb1c-5eb2-46d1-a3c1-c21ae4070ffc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-settings","validate-footer"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": 9778.01557165092\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"errors\": [],\n  \"is_valid\": true,\n  \"sanitized_html\": \"<p>Footer HTML with {{unsubscribe_link}}</p>\",\n  \"warnings\": [\n    \"Removed <style> tag\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c4fa31b1-1ecf-4e3f-885a-5ce40aa6b029","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-settings","validate-footer"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": 9778.01557165092\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"4f5daeec-b092-4098-93b5-23778bcba394","name":"Email Signatures","description":{"content":"Create and manage HTML email signatures appended to outgoing emails.","type":"text/plain"},"item":[{"id":"16d96756-8503-408f-90b8-12eb97050df8","name":"Get Tenant Template","request":{"name":"Get Tenant Template","description":{"content":"Get the tenant's email signature template.\n\nReturns the tenant-wide signature template with placeholders.\nReturns 404 if no template has been created yet.\n\n**Required Scopes:** `email_signatures:read`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f6c18394-f704-4df3-8901-b042ae2f02b9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"content_html\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"content_text\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"32b3a35b-8d48-465b-9982-f1469737d1f8","name":"Update Tenant Template","request":{"name":"Update Tenant Template","description":{"content":"Create or update the tenant's signature template.\n\nThis template serves as the master/default signature for the tenant.\nAgents can copy this template to customize their own signatures.\n\nSupported placeholders:\n- `{agent_name}` - Agent's display name\n- `{agent_email}` - Agent's email address\n- `{agent_phone}` - Agent's phone number (from TenantUser)\n- `{agent_title}` - Agent's job title (from TenantUser)\n- `{company_name}` - Company name (from Tenant)\n- `{company_logo}` - Company logo URL\n- `{company_website}` - Company website URL\n\n**Required Scopes:** `email_signatures:settings`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content_html\": \"<div style=\\\"font-family: Arial, sans-serif;\\\">\\n<p><strong>{agent_name}</strong></p>\\n<p>{agent_title}</p>\\n<p>{company_name}</p>\\n<p>Phone: {agent_phone}</p>\\n<p>Website: <a href=\\\"{company_website}\\\">{company_website}</a></p>\\n</div>\",\n  \"content_text\": \"{agent_name}\\n{agent_title}\\n{company_name}\\nPhone: {agent_phone}\\nWebsite: {company_website}\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"ae96e5be-c3a0-4e9f-b627-e1f750e6efbb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content_html\": \"<div style=\\\"font-family: Arial, sans-serif;\\\">\\n<p><strong>{agent_name}</strong></p>\\n<p>{agent_title}</p>\\n<p>{company_name}</p>\\n<p>Phone: {agent_phone}</p>\\n<p>Website: <a href=\\\"{company_website}\\\">{company_website}</a></p>\\n</div>\",\n  \"content_text\": \"{agent_name}\\n{agent_title}\\n{company_name}\\nPhone: {agent_phone}\\nWebsite: {company_website}\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"content_html\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"content_text\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7cc960f1-effe-4139-924c-bee10cf39681","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-signatures","template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content_html\": \"<div style=\\\"font-family: Arial, sans-serif;\\\">\\n<p><strong>{agent_name}</strong></p>\\n<p>{agent_title}</p>\\n<p>{company_name}</p>\\n<p>Phone: {agent_phone}</p>\\n<p>Website: <a href=\\\"{company_website}\\\">{company_website}</a></p>\\n</div>\",\n  \"content_text\": \"{agent_name}\\n{agent_title}\\n{company_name}\\nPhone: {agent_phone}\\nWebsite: {company_website}\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"64ba4747-3c4d-498e-bebc-ce24917db365","name":"Preview Template","request":{"name":"Preview Template","description":{"content":"Preview a signature template with resolved placeholders.\n\nIf `content_html` is not provided in the request, uses the current\ntenant template. Optionally override placeholder values for preview.\n\n**Required Scopes:** `email_signatures:read`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","template","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"agent_name\": \"John Smith\",\n  \"agent_title\": \"Support Agent\",\n  \"company_name\": \"Acme Corp\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"51974efe-94b1-4afc-9c54-cd3b08317a8e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","template","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"agent_name\": \"John Smith\",\n  \"agent_title\": \"Support Agent\",\n  \"company_name\": \"Acme Corp\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"resolved_html\": \"string\",\n  \"placeholders_used\": [\n    \"string\",\n    \"string\"\n  ],\n  \"resolved_text\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"854fdf3d-0824-41ea-b311-ec9367ddca3b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-signatures","template","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"agent_name\": \"John Smith\",\n  \"agent_title\": \"Support Agent\",\n  \"company_name\": \"Acme Corp\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8793ecc5-1471-41b7-99f9-feda9962fa7e","name":"Get My Signature","request":{"name":"Get My Signature","description":{"content":"Get the current user's email signature.\n\nReturns 404 if the user hasn't created a signature yet.\nUse POST /email-signatures/me/copy-from-template to initialize\nfrom the tenant template.\n\n**Required Scopes:** `email_signatures:read`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8b131be6-541f-4bbc-b914-6ab114850a49","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"content_html\": \"string\",\n  \"is_active\": true,\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"content_text\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"512b7eb6-8258-4b08-b35c-d8d1cbfd88bf","name":"Update My Signature","request":{"name":"Update My Signature","description":{"content":"Create or update the current user's email signature.\n\nThe signature HTML can include placeholders which will be resolved\nwhen emails are sent. However, users typically personalize the\nsignature with their actual values.\n\n**Required Scopes:** `email_signatures:update`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content_html\": \"<div style=\\\"font-family: Arial, sans-serif;\\\">\\n<p><strong>John Smith</strong></p>\\n<p>Senior Support Agent</p>\\n<p>Acme Corp</p>\\n<p>Phone: +1 555-123-4567</p>\\n</div>\",\n  \"content_text\": \"John Smith\\nSenior Support Agent\\nAcme Corp\\nPhone: +1 555-123-4567\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"988b1ca3-094c-4188-b0b2-bda321a47712","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content_html\": \"<div style=\\\"font-family: Arial, sans-serif;\\\">\\n<p><strong>John Smith</strong></p>\\n<p>Senior Support Agent</p>\\n<p>Acme Corp</p>\\n<p>Phone: +1 555-123-4567</p>\\n</div>\",\n  \"content_text\": \"John Smith\\nSenior Support Agent\\nAcme Corp\\nPhone: +1 555-123-4567\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"content_html\": \"string\",\n  \"is_active\": true,\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"content_text\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ba252ab7-c703-477b-836b-b7cacd8ccd3f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-signatures","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content_html\": \"<div style=\\\"font-family: Arial, sans-serif;\\\">\\n<p><strong>John Smith</strong></p>\\n<p>Senior Support Agent</p>\\n<p>Acme Corp</p>\\n<p>Phone: +1 555-123-4567</p>\\n</div>\",\n  \"content_text\": \"John Smith\\nSenior Support Agent\\nAcme Corp\\nPhone: +1 555-123-4567\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"43b939dc-055c-46ad-b4a3-3e12afe24cde","name":"Copy Template To My Signature","request":{"name":"Copy Template To My Signature","description":{"content":"Copy the tenant's signature template to the current user's signature.\n\nThis creates a personalized copy of the tenant template that the user\ncan then customize. The template's placeholders are copied as-is and\nwill be resolved when emails are sent.\n\nReturns 404 if no tenant template exists.\n\n**Required Scopes:** `email_signatures:update`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","me","copy-from-template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"e7f47775-5599-47d1-8d83-6eb34de05ae6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","me","copy-from-template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"user_id\": \"string\",\n  \"content_html\": \"string\",\n  \"is_active\": true,\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"content_text\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b63ad52a-b5bf-4d34-8900-c450a803cbe6","name":"Get Effective Signature","request":{"name":"Get Effective Signature","description":{"content":"Get the fully resolved signature for the current user.\n\nReturns the user's signature (if exists) or falls back to tenant template,\nwith all placeholders resolved to actual values.\n\nThis is what would be appended to outgoing emails.\n\n**Required Scopes:** `email_signatures:read`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","me","effective"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1c481104-7c7d-4cc9-ae3a-496ccf99a46b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","me","effective"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"html\": \"<div><p><strong>John Smith</strong></p></div>\",\n  \"source\": \"user\",\n  \"text\": \"John Smith\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"47a7bf4b-2b30-46d2-8fd5-265b25eefbad","name":"Preview My Signature","request":{"name":"Preview My Signature","description":{"content":"Preview the current user's signature with placeholders resolved.\n\nReturns the user's signature (if exists) or falls back to tenant template,\nwith all placeholders resolved to the user's actual values.\n\n**Required Scopes:** `email_signatures:read`","type":"text/plain"},"url":{"path":["api","v1","email-signatures","me","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"203de3a3-f31b-471e-b00e-0f7a5a9299a8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-signatures","me","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"resolved_html\": \"string\",\n  \"placeholders_used\": [\n    \"string\",\n    \"string\"\n  ],\n  \"resolved_text\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"be096114-2111-43d6-9cd3-2a3e96ece298","name":"Email Templates","description":{"content":"Design and manage reusable MJML-based email templates with configurable content slots for campaigns.","type":"text/plain"},"item":[{"id":"dc5d9dd9-88fc-4d01-85a3-ca6c29be096c","name":"Create Layout Template","request":{"name":"Create Layout Template","description":{"content":"Create a new email template with variable system\n\n**Required Scopes:** `email:create`\n\n- Define structural framework with MJML\n- Use {{variable_name}} placeholders for customization\n- Set color palette and fonts for brand consistency\n- MJML is validated and compiled to HTML on creation\n- Variables use lowercase_with_underscores naming convention\n\n**Variable System:**\n- Template variables: {{hero_title}}, {{cta_url}}, {{main_content}}\n- Contact variables: {{contact.name}}, {{contact.email}}\n- Company variables: {{company.name}}\n- System variables: {{system.year}}","type":"text/plain"},"url":{"path":["api","v1","email-templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"category\": \"promotional\",\n  \"color_palette\": {\n    \"primary\": \"#0066CC\",\n    \"secondary\": \"#333333\"\n  },\n  \"description\": \"Clean template with variable placeholders for customization\",\n  \"font_family\": \"Arial, sans-serif\",\n  \"mjml_source\": \"<mjml><mj-body><mj-text>{{hero_title}}</mj-text><mj-button href='{{cta_url}}'>{{cta_text}}</mj-button></mj-body></mjml>\",\n  \"name\": \"Professional Newsletter Template\",\n  \"thumbnail_url\": \"https://storage.example.com/templates/preview.png\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e09c4f5c-c790-4427-8f66-53fbb1d4f864","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"category\": \"promotional\",\n  \"color_palette\": {\n    \"primary\": \"#0066CC\",\n    \"secondary\": \"#333333\"\n  },\n  \"description\": \"Clean template with variable placeholders for customization\",\n  \"font_family\": \"Arial, sans-serif\",\n  \"mjml_source\": \"<mjml><mj-body><mj-text>{{hero_title}}</mj-text><mj-button href='{{cta_url}}'>{{cta_text}}</mj-button></mj-body></mjml>\",\n  \"name\": \"Professional Newsletter Template\",\n  \"thumbnail_url\": \"https://storage.example.com/templates/preview.png\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"category\": \"string\",\n  \"mjml_source\": \"string\",\n  \"html_compiled\": \"string\",\n  \"color_palette\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"font_family\": \"string\",\n  \"thumbnail_url\": \"string\",\n  \"is_system_template\": true,\n  \"version\": 7272,\n  \"created_by\": \"string\",\n  \"created_at\": \"1948-01-13T00:55:04.376Z\",\n  \"updated_at\": \"2016-01-02T06:08:07.785Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cc5e6c86-849e-4601-9866-9a9a7eb85f4f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"category\": \"promotional\",\n  \"color_palette\": {\n    \"primary\": \"#0066CC\",\n    \"secondary\": \"#333333\"\n  },\n  \"description\": \"Clean template with variable placeholders for customization\",\n  \"font_family\": \"Arial, sans-serif\",\n  \"mjml_source\": \"<mjml><mj-body><mj-text>{{hero_title}}</mj-text><mj-button href='{{cta_url}}'>{{cta_text}}</mj-button></mj-body></mjml>\",\n  \"name\": \"Professional Newsletter Template\",\n  \"thumbnail_url\": \"https://storage.example.com/templates/preview.png\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9eb7c347-cee8-4a92-ad41-10dabc107e1e","name":"List Layout Templates","request":{"name":"List Layout Templates","description":{"content":"List email templates for the tenant\n\n**Required Scopes:** `email:read`\n\n- Can filter by category (business, creative, minimal)\n- Can filter by system template flag\n- Can filter by active status\n- By default excludes hidden templates (use include_hidden=true to include)\n- Returns list without full MJML source (for performance)\n- Supports pagination with limit and offset","type":"text/plain"},"url":{"path":["api","v1","email-templates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"category","value":"string","description":"Filter by category"},{"disabled":false,"key":"is_system_template","value":"true","description":"Filter by system template flag"},{"disabled":false,"key":"is_active","value":"true","description":"Filter by active status"},{"disabled":false,"key":"include_hidden","value":"false","description":"Include hidden/archived templates"},{"disabled":false,"key":"limit","value":"50","description":"Max results"},{"disabled":false,"key":"offset","value":"0","description":"Results offset"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f1cc8a77-d81c-4305-b20c-9683e99651a1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates"],"host":["{{baseUrl}}"],"query":[{"key":"category","value":"string"},{"key":"is_system_template","value":"true"},{"key":"is_active","value":"true"},{"key":"include_hidden","value":"false"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"category\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"thumbnail_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_system_template\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"version\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_hidden\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"category\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"thumbnail_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_system_template\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"version\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_hidden\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"ee24235a-49e2-45a2-a0bc-5156a5c44774","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates"],"host":["{{baseUrl}}"],"query":[{"key":"category","value":"string"},{"key":"is_system_template","value":"true"},{"key":"is_active","value":"true"},{"key":"include_hidden","value":"false"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ff110d84-b1d4-46df-a152-0772bb156a52","name":"Get Layout Template","request":{"name":"Get Layout Template","description":{"content":"Get a specific email template with full MJML source\n\n**🔐 Required Scopes:** `email:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8052538f-b795-49cc-aaec-6403d4ae57ff","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"category\": \"string\",\n  \"mjml_source\": \"string\",\n  \"html_compiled\": \"string\",\n  \"color_palette\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"font_family\": \"string\",\n  \"thumbnail_url\": \"string\",\n  \"is_system_template\": true,\n  \"version\": 7272,\n  \"created_by\": \"string\",\n  \"created_at\": \"1948-01-13T00:55:04.376Z\",\n  \"updated_at\": \"2016-01-02T06:08:07.785Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b9e47d7c-b602-44dc-aba7-a182f2bc4978","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"68e043f2-aec8-4d00-808e-b0c70ce6f811","name":"Update Layout Template","request":{"name":"Update Layout Template","description":{"content":"Update email template with variable system\n\n- If MJML source is updated, recompiles to HTML\n- Creates new version (increments version number)\n- System templates cannot be modified\n- Template changes will affect future EmailContents using this template\n- Variables use {{variable_name}} syntax\n\n**🔐 Required Scopes:** `email:update`\n","type":"text/plain"},"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"category\": \"transactional\",\n  \"description\": \"Updated description\",\n  \"name\": \"Updated Template Name\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"08cfe228-6a7e-4e69-a191-697a9e76517d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"category\": \"transactional\",\n  \"description\": \"Updated description\",\n  \"name\": \"Updated Template Name\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"category\": \"string\",\n  \"mjml_source\": \"string\",\n  \"html_compiled\": \"string\",\n  \"color_palette\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"font_family\": \"string\",\n  \"thumbnail_url\": \"string\",\n  \"is_system_template\": true,\n  \"version\": 7272,\n  \"created_by\": \"string\",\n  \"created_at\": \"1948-01-13T00:55:04.376Z\",\n  \"updated_at\": \"2016-01-02T06:08:07.785Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ca02d9dd-1591-4fac-9ec9-efbb65ec3f3e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"category\": \"transactional\",\n  \"description\": \"Updated description\",\n  \"name\": \"Updated Template Name\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b9e2b29d-b9fa-4fba-b3a7-77631aed9d41","name":"Delete Layout Template","request":{"name":"Delete Layout Template","description":{"content":"Delete email template\n\n**Required Scopes:** `email:delete`\n\n- System templates cannot be deleted\n- Templates with EmailContents referencing them cannot be deleted (409 Conflict)\n- Use this endpoint to clean up unused templates","type":"text/plain"},"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"d6ec7a62-be50-4070-b3e2-43e6c2420513","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e5dd7ce6-b1a5-4c2c-862c-3073a288b768","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6c8889e8-257e-4657-a29a-eb0836f49c39","name":"Duplicate Layout Template","request":{"name":"Duplicate Layout Template","description":{"content":"Duplicate an email template\n\n**Required Scopes:** `email:create`\n\nCreates a copy of the template with a new name. All content fields are copied\n(MJML, HTML, category, colors, thumbnail, description). The duplicate is\nalways a non-system, non-hidden template owned by the requesting tenant.","type":"text/plain"},"url":{"path":["api","v1","email-templates",":template_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"new_name\": \"My Custom Template (Copy)\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f7097d3b-e5dc-4e47-9313-8f1c1c9a8818","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"new_name\": \"My Custom Template (Copy)\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"category\": \"string\",\n  \"mjml_source\": \"string\",\n  \"html_compiled\": \"string\",\n  \"color_palette\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"font_family\": \"string\",\n  \"thumbnail_url\": \"string\",\n  \"is_system_template\": true,\n  \"version\": 7272,\n  \"created_by\": \"string\",\n  \"created_at\": \"1948-01-13T00:55:04.376Z\",\n  \"updated_at\": \"2016-01-02T06:08:07.785Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"284cdcbd-3918-488c-b928-a7f8f4b0618c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates",":template_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"new_name\": \"My Custom Template (Copy)\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cff493b8-805d-4853-9ae8-75ca0d69d0c8","name":"Preview Layout","request":{"name":"Preview Layout","description":{"content":"Preview MJML template without saving (with variable replacement)\n\n- Accepts MJML source with {{variable}} placeholders\n- Replaces variables with example values\n- **Brand variables are auto-filled from tenant settings**\n- Compiles MJML to HTML\n- Returns HTML for preview\n- Does not save to database\n\n**Brand Variables (auto-filled):**\n- `{{company.brand_color_primary}}` - Primary brand color\n- `{{company.brand_color_secondary}}` - Secondary brand color\n- `{{company.brand_color_accent}}` - Accent brand color\n- `{{company.logo_url}}` - Company logo URL\n- `{{company.name}}` - Company name\n\n**Example Request:**\n```json\n{\n  \"mjml_source\": \"<mjml><mj-body><mj-text>{{hero_title}}</mj-text></mj-body></mjml>\",\n  \"variable_values\": {\n    \"hero_title\": \"Welcome to Our Platform\"\n  }\n}\n```\n\n**🔐 Required Scopes:** `email:read`\n","type":"text/plain"},"url":{"path":["api","v1","email-templates","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": 9330\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"867ad774-3030-4781-bcc9-75b43b4b965f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-templates","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": 9330\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"has_compliance_footer\": true,\n  \"html\": \"<html><body>...</body></html>\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5d1dd558-949c-4896-873c-c56a1aaef85e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-templates","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": 9330\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"64240230-bb0d-45bc-825f-20f3bf8ef390","name":"FAQ Management","description":{"content":"Manage FAQ entries in the knowledge base for AI-powered customer self-service.","type":"text/plain"},"item":[{"id":"8156b719-9c9b-42f5-87c9-d555665399eb","name":"List Managed Faqs","request":{"name":"List Managed Faqs","description":{"content":"List all managed FAQ documents, optionally filtered by folder.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","managed-faqs"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"folder_id","value":"string","description":"Filter by folder ID"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"320876da-4e76-4816-ab17-758443bec6b2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 1502\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9f8ae466-6299-4118-a4f5-71bbd8725b2e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bae6758b-6837-45cb-acd3-d75e94bfc737","name":"Create Managed Faq","request":{"name":"Create Managed Faq","description":{"content":"Create a new managed FAQ document.\n\nFolder validation:\n- Cannot create FAQs in system folders 'websites' or 'ticket-summaries'\n- If no folder_id is provided, auto-assigns to the 'General' system folder\n\n**Required Scopes:** `knowledge_base:create`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","managed-faqs"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"folder_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8d1be8bb-2f00-4289-abf3-60d9b8dc9115","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"folder_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"2019-01-13T21:51:22.192Z\",\n  \"updated_at\": \"1950-03-08T10:54:19.586Z\",\n  \"item_count\": 0,\n  \"last_synced\": \"1960-02-16T13:06:12.065Z\",\n  \"sync_status\": \"string\",\n  \"sync_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ac91725f-1902-4484-b4f8-c2fa2bcd66bf","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"folder_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c7c75108-8cd7-4f95-a5de-1fbfa050a6b3","name":"Get Managed Faq","request":{"name":"Get Managed Faq","description":{"content":"Get a managed FAQ document with all its Q&A items.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"390d7a00-b695-40c0-b6d1-915895283c4e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"1964-11-07T03:10:00.107Z\",\n  \"updated_at\": \"1949-03-26T09:50:02.012Z\",\n  \"item_count\": 0,\n  \"last_synced\": \"1962-11-06T05:43:36.774Z\",\n  \"sync_status\": \"string\",\n  \"sync_error\": \"string\",\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5f8c8445-a635-4c1e-be58-8aca031f34a8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae60695f-9c64-4450-a4d5-3b54b5de09f6","name":"Update Managed Faq","request":{"name":"Update Managed Faq","description":{"content":"Update a managed FAQ document title.\n\n**Required Scopes:** `knowledge_base:update`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"title\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b7922fa4-bbd7-4c69-9181-323b562a0d9a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"title\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"2019-01-13T21:51:22.192Z\",\n  \"updated_at\": \"1950-03-08T10:54:19.586Z\",\n  \"item_count\": 0,\n  \"last_synced\": \"1960-02-16T13:06:12.065Z\",\n  \"sync_status\": \"string\",\n  \"sync_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5aadd0b1-4e5c-4174-8306-756d4057a4ea","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"title\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0615be3f-0e41-4cee-a020-0755bc696f69","name":"Delete Managed Faq","request":{"name":"Delete Managed Faq","description":{"content":"Delete a managed FAQ document and all its items.\n\n**Required Scopes:** `knowledge_base:delete`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"4631f544-6bff-4526-8f57-390f3d22c5b5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"success\": true,\n  \"document_id\": \"string\",\n  \"item_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"53063e9f-3c20-40cd-a3c4-9deb93bf1d4a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3baba625-08be-4260-abdb-adba1a873576","name":"Sync Managed Faq","request":{"name":"Sync Managed Faq","description":{"content":"Sync a managed FAQ document to Gemini RAG.\n\nThis compiles all Q&A items and uploads them to Gemini.\n\n**Required Scopes:** `knowledge_base:update`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"8df6e841-79ca-4d31-a3c9-2c04c3d2f43f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"document_id\": \"string\",\n  \"item_count\": 5819,\n  \"synced_at\": \"1947-04-07T02:47:07.401Z\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"42e16bd2-bb73-4eb9-9f67-b49ccfa3cbca","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","managed-faqs",":document_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1b8bbf0d-9504-428e-8c50-0d0f00529248","name":"List Faq Items","request":{"name":"List Faq Items","description":{"content":"List all FAQ items for a managed FAQ document.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"document_id","value":"string","description":"(Required) "}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4c3ae1ef-7131-417a-96ab-88c6a671ac33","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items"],"host":["{{baseUrl}}"],"query":[{"key":"document_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"question\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"answer\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"document_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"folder_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sort_order\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"origin\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_conversation_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"confidence\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"review_notes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rag_file_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"times_retrieved\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"times_cited\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"times_in_sent_reply\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flagged_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"quality_score\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"positive_mass\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"negative_mass\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_by_usage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"retrieval_rank_multiplier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_used_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_verified_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"content_updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"question\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"answer\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"document_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"folder_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sort_order\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"origin\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_conversation_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"confidence\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"review_notes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rag_file_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"times_retrieved\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"times_cited\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"times_in_sent_reply\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flagged_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"quality_score\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"positive_mass\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"negative_mass\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verified_by_usage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"retrieval_rank_multiplier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_used_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_verified_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"content_updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"4d0b74bb-f218-432e-842e-de353a8e2ff6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items"],"host":["{{baseUrl}}"],"query":[{"key":"document_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"eb30c528-9b4e-4a3c-91b6-02983b94e7f1","name":"Create Faq Item","request":{"name":"Create Faq Item","description":{"content":"Create a FAQ entry.\n\nTwo shapes, decided by `document_id`:\n\n- **standalone (default)** — omit `document_id`. The entry lives directly in\n  a folder (`folder_id`, defaulting to the tenant's *Managed FAQ* system\n  folder) and owns ONE `faq_<id>.md` RAG file. This is the only shape new\n  entries should use; the compiled \"document container\" is retired.\n- **document-scoped (legacy)** — pass `document_id` and the entry is\n  appended to that managed FAQ document, which is recompiled and re-synced\n  as a whole. Unchanged, for back-compat.\n\nA standalone entry is indexed only when it is `published` — a `draft` is\ncreated but deliberately kept out of retrieval.\n\n**Required Scopes:** `knowledge_base:create`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"status\": \"string\",\n  \"language\": \"string\",\n  \"allow_duplicate\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b3029fc8-0b1d-431d-af18-b2a633b8dad2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"status\": \"string\",\n  \"language\": \"string\",\n  \"allow_duplicate\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"created_at\": \"1981-06-13T00:06:14.407Z\",\n  \"updated_at\": \"2008-03-23T11:55:14.817Z\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"sort_order\": 0,\n  \"status\": \"string\",\n  \"origin\": \"string\",\n  \"language\": \"string\",\n  \"source_conversation_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confidence\": 8060.323898094373,\n  \"review_notes\": \"string\",\n  \"rag_file_name\": \"string\",\n  \"times_retrieved\": 0,\n  \"times_cited\": 0,\n  \"times_in_sent_reply\": 0,\n  \"duplicate_count\": 0,\n  \"flagged_count\": 0,\n  \"quality_score\": 6569.214545137386,\n  \"positive_mass\": 1125.4661530189446,\n  \"negative_mass\": 9599.38805569141,\n  \"verified_by_usage\": false,\n  \"retrieval_rank_multiplier\": 1,\n  \"last_used_at\": \"2001-04-08T23:41:41.629Z\",\n  \"last_verified_at\": \"1978-10-15T20:59:19.734Z\",\n  \"content_updated_at\": \"1999-09-09T21:26:36.589Z\",\n  \"created_by_user_id\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b4d224bb-6171-4553-8ed0-5ee6c177e91f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"status\": \"string\",\n  \"language\": \"string\",\n  \"allow_duplicate\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"783c519a-e32d-438c-b3e7-0a1f361d4a6b","name":"List Faq Entries","request":{"name":"List Faq Entries","description":{"content":"List FAQ entries across folders, with filtering and sorting.\n\nUnlike `/faq-items`, this reaches standalone Managed FAQ entries — the ones\nwith no compiled parent document, which the document-scoped listing cannot\nsee at all.\n\nSorting by `quality` puts unscored entries (quality_score NULL) LAST rather\nthan treating them as zero: an unrated entry is unknown, not bad.\n\nBulk-migration **ledger rows** are hidden unless `include_ledger=true`.\nThey are archived bookkeeping rows (they stop the migration reprocessing a\nrejected cluster), and their `question` is raw cluster text — in a list they\nread as broken entries. They are detected structurally, not by text\nguessing; see `faq_migration_service.is_ledger_row`.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-entries"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"folder_id","value":"string","description":"Restrict to one KB folder"},{"disabled":false,"key":"document_id","value":"string","description":"Restrict to one compiled parent document"},{"disabled":false,"key":"status","value":"string","description":"draft | published | needs_review | archived. Accepts a comma-separated list (e.g. 'draft,needs_review') for a UNION."},{"disabled":false,"key":"origin","value":"string","description":"manual | auto_conversation | migrated | correction"},{"disabled":false,"key":"language","value":"string","description":"Filter by language tag"},{"disabled":false,"key":"search","value":"string","description":"Substring match on question/answer"},{"disabled":false,"key":"flagged_only","value":"false","description":"Only entries with flagged_count > 0"},{"disabled":false,"key":"review_only","value":"false","description":"The review queue: entries needing attention — status in (draft, needs_review) OR flagged_count > 0. Takes precedence over `status`/`flagged_only`."},{"disabled":false,"key":"include_ledger","value":"false","description":"Include bulk-migration ledger rows (archived bookkeeping entries whose question is raw cluster text). Excluded by default."},{"disabled":false,"key":"sort_by","value":"updated_at","description":"uses | quality | flags | retrieved | created_at | updated_at | sort_order"},{"disabled":false,"key":"sort_dir","value":"desc","description":"asc | desc"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d29aeaec-abd3-4da4-b52c-4bedecf827f1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"},{"key":"document_id","value":"string"},{"key":"status","value":"string"},{"key":"origin","value":"string"},{"key":"language","value":"string"},{"key":"search","value":"string"},{"key":"flagged_only","value":"false"},{"key":"review_only","value":"false"},{"key":"include_ledger","value":"false"},{"key":"sort_by","value":"updated_at"},{"key":"sort_dir","value":"desc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b484b999-b236-47e9-b5fe-b8d52dd75cde","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"},{"key":"document_id","value":"string"},{"key":"status","value":"string"},{"key":"origin","value":"string"},{"key":"language","value":"string"},{"key":"search","value":"string"},{"key":"flagged_only","value":"false"},{"key":"review_only","value":"false"},{"key":"include_ledger","value":"false"},{"key":"sort_by","value":"updated_at"},{"key":"sort_dir","value":"desc"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4197c13b-c63f-4feb-a4bb-e6ea4626ca3e","name":"Resolve Faq Entry Flags","request":{"name":"Resolve Faq Entry Flags","description":{"content":"Clear an entry's flags after a reviewer has looked at it.\n\nSets ``flagged_count`` to 0 and writes an audit revision. Does NOT touch\ncontent, status or the corpus — resolving flags is review bookkeeping, not an\nedit, so retrieval is unaffected and no re-sync happens.\n\n**Required Scopes:** `knowledge_base:update`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-entries",":entry_id","resolve-flags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"entry_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"0679843f-f910-44c1-88ef-d918989ed935","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries",":entry_id","resolve-flags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"entry_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fea330f9-071b-4429-a38f-af21db57c4f9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries",":entry_id","resolve-flags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"entry_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"10e69496-f9d1-4023-ba96-2ef2147fe7d5","name":"Get Duplicate Clusters","request":{"name":"Get Duplicate Clusters","description":{"content":"Clusters of live entries that look like duplicates of each other.\n\nSame heuristic as the KB-health dashboard (exact match on the\nalphanumeric-normalised question) so the two surfaces agree on what a\nduplicate is. Each cluster is a candidate for `POST /faq-entries/merge`.\nLedger rows and archived entries are excluded.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-entries","duplicate-clusters"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"folder_id","value":"string","description":"Restrict to one KB folder"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"db89b00b-6459-4050-844d-009e1cfcf318","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries","duplicate-clusters"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fef71e6e-c92f-401a-9725-34f6f02dc7d6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries","duplicate-clusters"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8743655b-c8e4-4de8-b5c8-8b33d25feecb","name":"Merge Faq Entries","request":{"name":"Merge Faq Entries","description":{"content":"Consolidate duplicate FAQ entries into one.\n\nApproval-gated and NEVER automatic — nothing in generation/migration/\ncorrection calls this. ``dry_run`` defaults to TRUE and only PREVIEWS\n(merged_stats, files that would be deleted, question variants). An execute\n(``dry_run=false``) is additionally gated by the server-side\n``FAQ_MERGE_EXECUTION_ENABLED`` flag; while that flag is off the execute path\nreturns **403** so the destructive RAG/GCS delete cannot run by accident\nagainst the shared production database. See ``faq_merge_service`` for the full\nsafety model (three independent guards + the orphan basename guardrail).\n\nOn execute the winner inherits summed usage stats, unioned rating mass\n(quality recomputed via the Wilson lower bound), unioned source\nconversations, and the losers' question phrasings; losers are de-indexed and\narchived with a merge tombstone; the winner is re-synced to RAG.\n\n**Required Scopes:** `knowledge_base:delete`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-entries","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"winner_id\": \"string\",\n  \"loser_ids\": [\n    \"string\"\n  ],\n  \"dry_run\": true,\n  \"keep_loser_questions_as_variants\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"afdb390f-fe32-4614-ad75-72eefbbd21e7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"winner_id\": \"string\",\n  \"loser_ids\": [\n    \"string\"\n  ],\n  \"dry_run\": true,\n  \"keep_loser_questions_as_variants\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c00eb452-9742-4313-b919-f5936184a014","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-entries","merge"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"winner_id\": \"string\",\n  \"loser_ids\": [\n    \"string\"\n  ],\n  \"dry_run\": true,\n  \"keep_loser_questions_as_variants\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bb98addb-9a35-4c50-bd6b-10849848842e","name":"Batch Create Faq Items","request":{"name":"Batch Create Faq Items","description":{"content":"Create multiple FAQ items in a single request.\n\nAll items must belong to the same document. Triggers ONE background sync\nafter all items are saved.\n\n**Required Scopes:** `knowledge_base:create`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items","batch"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2e6b8105-de13-420d-a5d0-15243ad4b8d0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items","batch"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_count\": 5767,\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"31377355-e58e-4ccc-a283-5f096faab16c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items","batch"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2406b6fc-50af-4a15-b036-60b64b180d85","name":"Get Faq Item","request":{"name":"Get Faq Item","description":{"content":"Get a single FAQ item.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4fb99953-8f44-4fe0-a415-2b9af9d91ce9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"created_at\": \"1981-06-13T00:06:14.407Z\",\n  \"updated_at\": \"2008-03-23T11:55:14.817Z\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"sort_order\": 0,\n  \"status\": \"string\",\n  \"origin\": \"string\",\n  \"language\": \"string\",\n  \"source_conversation_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confidence\": 8060.323898094373,\n  \"review_notes\": \"string\",\n  \"rag_file_name\": \"string\",\n  \"times_retrieved\": 0,\n  \"times_cited\": 0,\n  \"times_in_sent_reply\": 0,\n  \"duplicate_count\": 0,\n  \"flagged_count\": 0,\n  \"quality_score\": 6569.214545137386,\n  \"positive_mass\": 1125.4661530189446,\n  \"negative_mass\": 9599.38805569141,\n  \"verified_by_usage\": false,\n  \"retrieval_rank_multiplier\": 1,\n  \"last_used_at\": \"2001-04-08T23:41:41.629Z\",\n  \"last_verified_at\": \"1978-10-15T20:59:19.734Z\",\n  \"content_updated_at\": \"1999-09-09T21:26:36.589Z\",\n  \"created_by_user_id\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1f288a5b-3893-4a25-b76d-4d8f6eb0f7a0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"95fb4025-e3cc-4202-a8ce-1d6363aa0a6a","name":"Update Faq Item","request":{"name":"Update Faq Item","description":{"content":"Update a FAQ item: content, lifecycle status, language, folder.\n\nThis is also the publish/unpublish/archive route — `FAQItemUpdate` carries\n`status` and there is no separate publish endpoint. Because the corpus\nfollows `status`, flipping a draft to `published` is what indexes it and\nputs it in front of customers.\n\nEvery field the schema accepts is forwarded to the service. It previously\nforwarded only `question`/`answer`, so a publish returned 200 while the\nentry stayed a draft, unindexed and invisible to the assistant.\n\nThe Vertex round-trip (upload + import, tens of seconds) is NOT held open\ninside the request: a standalone entry's re-index is handed to the\n`resync_faq_entry` job on the KB administration worker — the same path the\ncreate route and the review queue use. The response returns as soon as the\nrow is committed, so an entry can read `published` for a few seconds before\n`rag_file_name` is populated. The job re-reads the entry's current status,\nso rapid publish/unpublish pairs converge on the last write instead of\nracing.\n\nA legacy document-scoped entry additionally schedules a recompile of its\nparent document.\n\n**Required Scopes:** `knowledge_base:update`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"status\": \"string\",\n  \"folder_id\": \"string\",\n  \"language\": \"string\",\n  \"review_notes\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d29b1671-d68b-4cdf-ba96-861604c38229","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"status\": \"string\",\n  \"folder_id\": \"string\",\n  \"language\": \"string\",\n  \"review_notes\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"created_at\": \"1981-06-13T00:06:14.407Z\",\n  \"updated_at\": \"2008-03-23T11:55:14.817Z\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"sort_order\": 0,\n  \"status\": \"string\",\n  \"origin\": \"string\",\n  \"language\": \"string\",\n  \"source_conversation_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"confidence\": 8060.323898094373,\n  \"review_notes\": \"string\",\n  \"rag_file_name\": \"string\",\n  \"times_retrieved\": 0,\n  \"times_cited\": 0,\n  \"times_in_sent_reply\": 0,\n  \"duplicate_count\": 0,\n  \"flagged_count\": 0,\n  \"quality_score\": 6569.214545137386,\n  \"positive_mass\": 1125.4661530189446,\n  \"negative_mass\": 9599.38805569141,\n  \"verified_by_usage\": false,\n  \"retrieval_rank_multiplier\": 1,\n  \"last_used_at\": \"2001-04-08T23:41:41.629Z\",\n  \"last_verified_at\": \"1978-10-15T20:59:19.734Z\",\n  \"content_updated_at\": \"1999-09-09T21:26:36.589Z\",\n  \"created_by_user_id\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bf20de79-452c-4df6-a3a4-c99720ce79a6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"question\": \"string\",\n  \"answer\": \"string\",\n  \"status\": \"string\",\n  \"folder_id\": \"string\",\n  \"language\": \"string\",\n  \"review_notes\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9fc95cc7-77c3-4868-922c-0126fb58e1e9","name":"Delete Faq Item","request":{"name":"Delete Faq Item","description":{"content":"Delete a FAQ item.\n\nAutomatically triggers a background sync to Vertex AI RAG after deletion.\n\n**Required Scopes:** `knowledge_base:delete`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"beee6cec-4bbc-4078-8557-6de9a4562171","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"success\": true,\n  \"document_id\": \"string\",\n  \"item_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"49b42d96-f7f0-4df5-866a-a62eba0b3bac","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items",":item_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cb62a7b1-2bc1-4555-b867-ecc3ab87ca88","name":"Reorder Faq Items","request":{"name":"Reorder Faq Items","description":{"content":"Reorder FAQ items within a document.\n\nAutomatically triggers a background sync to Vertex AI RAG after reorder.\n\n**Required Scopes:** `knowledge_base:update`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-items","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_id\": \"string\",\n  \"item_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0f023440-bf9e-4c5e-bcdc-d27d6d659282","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_id\": \"string\",\n  \"item_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"success\": true,\n  \"document_id\": \"string\",\n  \"item_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c9ff930d-c953-4004-b35a-f4bf72da0114","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-items","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_id\": \"string\",\n  \"item_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"4cc91a48-e391-4e42-abd8-e4f24985b784","name":"Flows","description":{"content":"Build and execute visual automation flows. Triggers, multi-channel sends, conditions, delays, tag updates, tracked links, and webhook nodes. Start runs via API or from contact profiles.","type":"text/plain"},"item":[{"id":"de4864ad-48b4-4dcd-9806-19a7d61b2892","name":"List Flow Secrets","request":{"name":"List Flow Secrets","description":{"content":"List the tenant's flow secrets (names + masked previews only).\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows","secrets"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ff926458-d50f-4ee0-977c-8b408523d5af","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","secrets"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"pagination\": {}\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8844b2c2-2ee1-4112-a613-5c06abab3d2b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","secrets"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ef14dee4-9c35-47c3-95a0-576ca7fda8ea","name":"Upsert Flow Secret","request":{"name":"Upsert Flow Secret","description":{"content":"Create or rotate a flow secret. The value is write-only.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows","secrets",":name"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"name","description":"(Required) Secret name (upper-cased; ^[A-Z][A-Z0-9_]{0,63}$)"}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"value\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"41f0385c-7fb3-45db-88fd-2409754e2efb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","secrets",":name"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"name","description":"(Required) Secret name (upper-cased; ^[A-Z][A-Z0-9_]{0,63}$)"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"value\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"preview\": \"string\",\n  \"updated_at\": \"1956-11-21T16:21:10.258Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"722811e2-d20f-48ac-ae28-199c2b7be7af","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","secrets",":name"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"name","description":"(Required) Secret name (upper-cased; ^[A-Z][A-Z0-9_]{0,63}$)"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"value\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2170a055-c7b7-4c5c-ba01-3fc8882f6bee","name":"Delete Flow Secret","request":{"name":"Delete Flow Secret","description":{"content":"Delete a flow secret by name.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows","secrets",":name"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"name","description":"(Required) Secret name (upper-cased; ^[A-Z][A-Z0-9_]{0,63}$)"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"f3bf67cb-a49e-4d8c-9b22-4709f8024ab2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","secrets",":name"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"name","description":"(Required) Secret name (upper-cased; ^[A-Z][A-Z0-9_]{0,63}$)"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4882026d-32a8-4941-8368-0cd4eca69239","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","secrets",":name"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"name","description":"(Required) Secret name (upper-cased; ^[A-Z][A-Z0-9_]{0,63}$)"}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"845e9fad-7969-4be8-810b-20cdca3b76b5","name":"Create Flow","request":{"name":"Create Flow","description":{"content":"Create a new flow in ``draft`` status.\n\nThe ``definition`` JSON is validated structurally — see\n:class:`FlowDefinitionValidator`. Validation failures return\n``400 FLOW_DEFINITION_INVALID`` with the full error list.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\"\n  },\n  \"description\": \"string\",\n  \"re_entry_policy\": \"block\",\n  \"default_language\": \"string\",\n  \"manually_triggerable\": true,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"cascade\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": false,\n  \"priority\": 1087,\n  \"exclusive\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"cf2d7012-95eb-4530-9124-546b37abe741","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"definition\": {\n    \"key_0\": 8277.05280818681\n  },\n  \"description\": \"string\",\n  \"re_entry_policy\": \"block\",\n  \"default_language\": \"string\",\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"cascade\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": false,\n  \"stop_on_conversation_closed\": false,\n  \"priority\": 2321,\n  \"exclusive\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"648705f4-74e4-4a35-8113-d33998a8e0d1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"definition\": {\n    \"key_0\": 8277.05280818681\n  },\n  \"description\": \"string\",\n  \"re_entry_policy\": \"block\",\n  \"default_language\": \"string\",\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"cascade\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": false,\n  \"stop_on_conversation_closed\": false,\n  \"priority\": 2321,\n  \"exclusive\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0a391f3a-36bd-4cc5-8140-36df9efdb2bb","name":"List Flows","request":{"name":"List Flows","description":{"content":"List flows for the current tenant.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"draft","description":"Filter by status (draft, published, paused, archived)."},{"disabled":false,"key":"name","value":"string","description":"Case-insensitive substring filter on flow name."},{"disabled":false,"key":"manually_triggerable","value":"false","description":"When True, return only flows that operators can manually start from the picker (``flows.manually_triggerable = TRUE``). When omitted/None the flows index page returns all flows without silent filtering."},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"844af5c2-2eda-4033-aafc-dbd90b1c9c85","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"draft"},{"key":"name","value":"string"},{"key":"manually_triggerable","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"884f84fb-a1dd-4dc2-b9b0-5cd6d47e3fbb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"draft"},{"key":"name","value":"string"},{"key":"manually_triggerable","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fbdff3e6-145c-4a92-8473-53feb3086490","name":"Duplicate Flow","request":{"name":"Duplicate Flow","description":{"content":"Create an independent copy of an existing flow as a fresh ``draft``.\n\nThe copy mirrors every behaviour-defining field on the source — full\n``definition`` JSON (trigger, schedule, nodes, edges, node configs,\nre-entry policy), ``description``, and the channel/tag/etc. config\nnested inside ``definition``. Node ids are regenerated and every\ninternal reference (edges, ``entry_node_id``, config-level\n``*_node_id`` keys) is remapped so the copy is fully self-consistent.\n\nResets on the copy:\n\n* ``status`` is ``draft`` regardless of source status — so nothing\n  fires until the user explicitly publishes the copy.\n* Fresh ``id`` / ``created_at`` / ``updated_at``.\n* No run history (``flow_runs`` rows are not copied).\n\nBody is optional. When ``name`` is omitted the default is\n``\"<source.name> (copy)\"``. Source flows in any status (draft,\npublished, paused, archived) can be duplicated.\n\nReturns 404 when the source flow doesn't exist on the caller's tenant.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"5966d861-c7c8-4520-8335-67ba6c73ce66","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0b0e1094-bad0-482a-a80a-00e94c6eaa44","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","duplicate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a4c881aa-0967-4410-a3e8-967a4cfa3a70","name":"List Flow Templates","request":{"name":"List Flow Templates","description":{"content":"List available flow templates (Phase 3 — May 2026).\n\nTemplates ship pre-built flow definitions that exercise the new\ntriggers (incoming_message, conversation_opened) and nodes (choice,\nbranch, run_assistant, kb_query). The Flows Creator surfaces this\ngallery before opening an empty canvas.\n\n**Required Scopes:** `flows:read`\n\nReturns a list of template summaries (without the full definition).\nFetch one template's full definition via\n``GET /flows/templates/{template_id}``.","type":"text/plain"},"url":{"path":["api","v1","flows","templates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"language","value":"string","description":"ISO 639-1 language code (e.g. 'en', 'de', 'fr'). Currently advisory — copy is EN-only in this phase."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"48da8417-28e3-4297-880b-a815063689c5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","templates"],"host":["{{baseUrl}}"],"query":[{"key":"language","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0a6fe196-4b72-41dd-be35-b7aadc624382","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","templates"],"host":["{{baseUrl}}"],"query":[{"key":"language","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4eef0120-8119-46ab-90f2-31bd56609399","name":"Get Flow Template","request":{"name":"Get Flow Template","description":{"content":"Return one flow template including its full ``definition`` ready to\ndrop into ``POST /flows`` (the FE typically prefills the create form\nwith this).\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows","templates",":template_id"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"language","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1922a4c6-990f-415b-af28-3a46b51b14a5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","templates",":template_id"],"host":["{{baseUrl}}"],"query":[{"key":"language","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f7cdce1d-a05f-464d-b4ca-d8e11d6e0681","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","templates",":template_id"],"host":["{{baseUrl}}"],"query":[{"key":"language","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c7a3a7d6-f0fb-4a63-be40-14f76658ddfd","name":"Get Flow Variables","request":{"name":"Get Flow Variables","description":{"content":"Return the typed variable catalog used by the Flow Builder's Branch\nnode \"match contact field / tag / list / custom field\" picker.\n\n**Required Scopes:** `flows:read`\n\nSections:\n\n* ``contact_fields``  — built-in Contact columns + tags/lists pseudo-fields.\n* ``custom_fields``   — tenant ``custom_field_definitions`` exposed as\n  ``contact.custom.<key>`` paths with a best-effort type hint.\n* ``tags``            — tenant tag names (path = tag name).\n* ``lists``           — tenant subscription lists (path = list UUID,\n  label = list name).\n* ``flow_variables``  — populated only when ``flow_id`` is supplied;\n  otherwise empty.","type":"text/plain"},"url":{"path":["api","v1","flows","variables"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"flow_id","value":"string","description":"Optional flow ID. When provided, the response also includes the flow's own ``flow.vars.<output_var>`` variables walked from its ``collect_input`` / ``kb_query`` / ``create_tracked_link`` nodes."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b331ff47-9a78-4896-b0e0-1c3e372fea05","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","variables"],"host":["{{baseUrl}}"],"query":[{"key":"flow_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"33ca1c71-74e3-44ed-9ac4-841177d35bbe","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","variables"],"host":["{{baseUrl}}"],"query":[{"key":"flow_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"16864fb4-c911-4c23-af90-b68ba72ffaf9","name":"Reorder Flows","request":{"name":"Reorder Flows","description":{"content":"Re-order flow trigger priorities for the current tenant.\n\nAccepts EITHER an ordered ``flow_ids`` list (server assigns\n``priority = position``, 0-based, so the first id wins) OR an explicit\n``items: [{flow_id, priority}]`` list. Exactly one shape must be supplied.\nLower ``priority`` = higher precedence (evaluated first when multiple flows\nmatch the same inbound event).\n\nAll ids are validated to belong to this tenant BEFORE any write; the whole\nbatch is persisted in a single transaction (fail-closed — if any id is not\nowned by the tenant, nothing is written and a 404 is returned).\n\n**Required Scopes:** `flows:write`\n\n**Database:** SHARD (``flows`` — tenant-filtered on every row).\n\nReturns the resulting ordering: ``{\"items\": [{flow_id, name, priority},\n...]}`` sorted by ``priority`` ASC.","type":"text/plain"},"url":{"path":["api","v1","flows","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"flow_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"cd752650-5a02-4103-a390-5156482a394c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"flow_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9c9d1945-a069-459d-bc1d-54ed999722d8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","reorder"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"flow_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0987f62d-a7d0-448e-a943-b41335b33eee","name":"Get Flow","request":{"name":"Get Flow","description":{"content":"Fetch a single flow.\n\n``run_count`` is the number of ``flow_runs`` rows a permanent delete\n(``DELETE /flows/{id}/permanent``) would destroy — the UI uses it to\nwarn before that irreversible call.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e05e56a1-913f-4bf6-aa9a-ea4bd755bfd0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"652ad618-ef74-4310-9643-75781207969e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"870fd8bd-06f0-4457-8785-7eac6bcf9090","name":"Update Flow","request":{"name":"Update Flow","description":{"content":"Update a flow.\n\nAll fields optional. When ``definition`` is provided the API re-runs\nsave-time structural validation. Editing a published flow is allowed —\nthe engine snapshots ``definition`` into\n``flow_runs.context.definition_snapshot`` at run-start so in-flight\nruns are isolated from the edit.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"definition\": {\n    \"key_0\": 9672,\n    \"key_1\": false,\n    \"key_2\": 9541,\n    \"key_3\": 7146.290870370062,\n    \"key_4\": \"string\"\n  },\n  \"re_entry_policy\": \"string\",\n  \"default_language\": \"string\",\n  \"prefer_originating_channel\": false,\n  \"manually_triggerable\": true,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"fixed\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": false,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 9409,\n  \"exclusive\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"857fbd0b-7ae4-44da-a5dc-ef02f3918461","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"definition\": {\n    \"key_0\": false\n  },\n  \"re_entry_policy\": \"string\",\n  \"default_language\": \"string\",\n  \"prefer_originating_channel\": false,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"fixed\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": false,\n  \"stop_on_conversation_closed\": false,\n  \"priority\": 6033,\n  \"exclusive\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7c40ac51-4cde-48da-852b-0653a30dca51","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"definition\": {\n    \"key_0\": false\n  },\n  \"re_entry_policy\": \"string\",\n  \"default_language\": \"string\",\n  \"prefer_originating_channel\": false,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": true,\n  \"language_detection_strategy\": \"fixed\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": false,\n  \"stop_on_conversation_closed\": false,\n  \"priority\": 6033,\n  \"exclusive\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e841b1a3-1a51-4cb2-b431-850bb269751b","name":"Archive Flow","request":{"name":"Archive Flow","description":{"content":"Soft-archive a flow.\n\nSets ``status='archived'``. Idempotent — archiving an already-archived\nflow returns the same shape rather than 404. Existing in-flight runs\ncontinue.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"48e5b52e-a747-4182-9a9e-a2cb84f1ccfd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d3955516-76fc-458f-a546-46055e0e4d9b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"60207b78-d5bc-47d7-8698-b63d2d751e99","name":"Get Flow Validation","request":{"name":"Get Flow Validation","description":{"content":"Return the publish-time validation snapshot for a flow.\n\nSame shape as ``FlowResponse.validation`` — exposed as a dedicated\nendpoint so the Flows editor can poll cheap validation passes\nafter local edits without re-fetching the whole flow row. The\nFlows editor uses this to gate the \"Activate\" button and surface\ninline ``{path, message}`` warnings on the offending nodes /\ntrigger.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","validation"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"55ed52df-c799-49f5-afde-90de21fb8b17","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","validation"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"can_activate\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"736c2f29-1e41-4234-a4f2-6a74ada82cc8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","validation"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"99e8909c-2dd7-41ad-a4d5-60743a0557bb","name":"Publish Flow","request":{"name":"Publish Flow","description":{"content":"Publish a flow.\n\nRuns the **stricter** publish-time validation pass:\n\n- Every node reachable from ``entry_node_id``.\n- No orphan nodes.\n- Every condition has both ``yes_node_id`` + ``no_node_id`` wired.\n- No infinite cycles in synchronous-only paths (Delay/Send-bearing\n  cycles are allowed — they're the legitimate \"drip every day\" pattern).\n\nReturns ``400 FLOW_DEFINITION_INVALID`` with the full error list on\nfailure. Returns ``409`` when trying to publish an archived flow.\n\n**Required Scopes:** `flows:publish`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"8cef4af4-c19c-4fa3-a7fc-9425492e53c9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"57738400-8fd4-4ce2-92c0-acd6480c3ad7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"da5cde49-da1b-4b5e-9b46-976aacfda408","name":"Pause Flow","request":{"name":"Pause Flow","description":{"content":"Pause a published flow.\n\nNew ``POST /flows/{id}/runs`` calls return ``409`` while paused\n(``FlowEngineService.start_run`` requires PUBLISHED). In-flight runs\ncontinue — operators want to drain.\n\nIdempotent on already-paused.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"73598fa2-eb0d-4cd5-b260-469f4e13797d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fa3d6730-0725-4993-977c-e8be1bb933e3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"76ee9f32-9e70-41e7-a3ba-7e65f731bb8e","name":"Delete Flow Permanently","request":{"name":"Delete Flow Permanently","description":{"content":"Permanently delete a flow — irreversible, destroys run history.\n\nDistinct from ``DELETE /flows/{id}``, which soft-archives (reversible\nvia ``POST /flows/{id}/unarchive``). This endpoint removes the\n``flows`` row AND every child row: ``flow_runs``, ``flow_run_steps``,\n``flow_run_waits``. No FK cascades exist on the flow tables, so the\nservice deletes children explicitly inside one transaction. Keyword-bot\nwiring that pointed at the flow is detached (set to NULL) rather than\ndeleted. Conversation ``messages`` and ``tracked_links`` produced by\nthe flow are KEPT — they are real history and their flow attribution\nreaders are already best-effort.\n\nRefuses with ``409`` rather than corrupting state:\n\n* flow is ``published`` — pause or archive it first;\n* the flow has in-flight runs (``running``/``waiting``) — stop them or\n  let them finish. Flow-Test-Mode runs never block.\n\nThe ``detail`` string names which of the two it is and, for in-flight\nruns, how many. ``GET /flows/{id}`` (and the flows list) expose\n``run_count`` so the UI can warn how many runs a delete would destroy\nBEFORE calling this.\n\nReturns ``404`` when the flow does not exist for this tenant — this is\nNOT idempotent-on-missing like archive, because \"already gone\" and\n\"never yours\" must not be distinguishable across tenants.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","permanent"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"87773aa5-58a6-40e1-afef-ed1d397fb5fa","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","permanent"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"67d80ef6-f733-4d93-a5ce-f0a3741d11d0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","permanent"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1224ef2d-d2a4-451d-8e1e-aa70e88ca4e2","name":"Unarchive Flow","request":{"name":"Unarchive Flow","description":{"content":"Restore a soft-archived flow to draft status.\n\nReturns 409 if the flow is not archived.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","unarchive"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"d5c6edab-2f61-4731-b5aa-d2d2ed299c23","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","unarchive"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\",\n  \"definition\": {\n    \"key_0\": \"string\",\n    \"key_1\": false,\n    \"key_2\": 6030.835475483836\n  },\n  \"re_entry_policy\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"description\": \"string\",\n  \"default_language\": \"en\",\n  \"prefer_originating_channel\": true,\n  \"manually_triggerable\": false,\n  \"auto_translate_messages\": false,\n  \"language_detection_strategy\": \"string\",\n  \"default_channel_chain\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stop_on_agent_reply\": true,\n  \"stop_on_conversation_closed\": true,\n  \"priority\": 0,\n  \"exclusive\": false,\n  \"created_by_user_id\": \"string\",\n  \"validation\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"run_count\": 4550\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"926a47e2-e2e7-472d-a54e-57c6436e5971","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","unarchive"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae243092-544e-4cc9-a70a-9624cfc67a22","name":"Start Flow Run","request":{"name":"Start Flow Run","description":{"content":"Start a flow run for a contact.\n\nHonors idempotency from EITHER the request body field\n``idempotency_key`` OR the HTTP header ``Idempotency-Key`` (body wins\non conflict). The engine's ``start_run`` returns the existing run on\ncollision with HTTP 200; new runs return HTTP 201.\n\nReturns ``409`` if the flow isn't published, ``404`` if the contact\ndoesn't exist on this tenant, ``409 FLOW_RUN_BLOCKED`` when the\nre-entry policy is ``block`` and an active run already exists.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"disabled":false,"key":"Idempotency-Key","value":"string","description":""},{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"context\": {\n    \"key_0\": 2608,\n    \"key_1\": false,\n    \"key_2\": \"string\"\n  },\n  \"contact_method_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"channel_id\": \"string\",\n  \"contact_method_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"90ecc618-6139-4d02-81c2-b79e903da7a6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"disabled":false,"key":"Idempotency-Key","value":"string","description":""},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"context\": {\n    \"key_0\": 2608,\n    \"key_1\": false,\n    \"key_2\": \"string\"\n  },\n  \"contact_method_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"channel_id\": \"string\",\n  \"contact_method_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"status\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"started_at\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"current_node_id\": \"string\",\n  \"context\": {\n    \"key_0\": 5170,\n    \"key_1\": \"string\",\n    \"key_2\": 7437.6038595136915,\n    \"key_3\": 1589.9478295659665\n  },\n  \"completed_at\": \"string\",\n  \"error_message\": \"string\",\n  \"failed_node_id\": \"string\",\n  \"failed_node_label\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a092af58-b3cf-40b9-ab8f-5217d157b214","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"disabled":false,"key":"Idempotency-Key","value":"string","description":""},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"context\": {\n    \"key_0\": 2608,\n    \"key_1\": false,\n    \"key_2\": \"string\"\n  },\n  \"contact_method_overrides\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"channel_id\": \"string\",\n  \"contact_method_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"842d144d-a417-4201-8f68-597b43b68a62","name":"List Flow Runs","request":{"name":"List Flow Runs","description":{"content":"List runs for a flow.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"contact_id","value":"string","description":"Filter to runs for this contact"},{"disabled":false,"key":"status","value":"completed","description":"Filter by run status (running, waiting, completed, failed, canceled)."},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"13a1be17-1129-4ce8-a3da-fa0e2dc27212","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs"],"host":["{{baseUrl}}"],"query":[{"key":"contact_id","value":"string"},{"key":"status","value":"completed"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"160b7853-eb3b-4238-a14c-5434604851d2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs"],"host":["{{baseUrl}}"],"query":[{"key":"contact_id","value":"string"},{"key":"status","value":"completed"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c6598153-7be0-43fe-8338-51e1861a3e51","name":"Get Flow Run","request":{"name":"Get Flow Run","description":{"content":"Fetch a single flow run.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs",":run_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4f262e7b-aaba-41b1-bdbd-c152b039cd34","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"status\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"started_at\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"current_node_id\": \"string\",\n  \"context\": {\n    \"key_0\": 5170,\n    \"key_1\": \"string\",\n    \"key_2\": 7437.6038595136915,\n    \"key_3\": 1589.9478295659665\n  },\n  \"completed_at\": \"string\",\n  \"error_message\": \"string\",\n  \"failed_node_id\": \"string\",\n  \"failed_node_label\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"37338791-6a9b-4487-ab5e-454389169ff4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"663f8cd5-304f-4d44-907c-e31fa0ad0706","name":"Stop Flow Run","request":{"name":"Stop Flow Run","description":{"content":"Operator-initiated cancel of a flow run.\n\nMarks the run ``canceled``, deletes pending waits and cancels any\nflows it started and is waiting on (Start Flow node). Idempotent —\nalready-terminal runs return their current row unchanged.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","stop"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"4f598eae-26f9-44ed-abef-176bae8d4dd6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","stop"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"status\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"started_at\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"current_node_id\": \"string\",\n  \"context\": {\n    \"key_0\": 5170,\n    \"key_1\": \"string\",\n    \"key_2\": 7437.6038595136915,\n    \"key_3\": 1589.9478295659665\n  },\n  \"completed_at\": \"string\",\n  \"error_message\": \"string\",\n  \"failed_node_id\": \"string\",\n  \"failed_node_label\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1e1f6958-010e-41cc-a312-ca472b0fecdb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","stop"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5aa992dc-c8b6-493c-b919-2bbb5e569d6d","name":"Stop Flow Run By Run Id","request":{"name":"Stop Flow Run By Run Id","description":{"content":"Operator-initiated cancel of a flow run, by ``run_id`` alone.\n\nConvenience companion to ``POST /flows/{flow_id}/runs/{run_id}/stop``\nfor callers (notably the Conversations UI) that have the run id from\nthe conversation's ``active_flow_run.run_id`` but no flow_id. Marks\nthe run ``canceled``, deletes pending waits and cancels any flows it\nstarted and is waiting on (Start Flow node). Idempotent —\nalready-terminal runs return their current row unchanged.\n\n**Required Scopes:** `flows:write`","type":"text/plain"},"url":{"path":["api","v1","flows","runs",":run_id","stop"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"32d2c2de-6de5-4929-a0a4-58f291e4788d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows","runs",":run_id","stop"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"status\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"started_at\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"current_node_id\": \"string\",\n  \"context\": {\n    \"key_0\": 5170,\n    \"key_1\": \"string\",\n    \"key_2\": 7437.6038595136915,\n    \"key_3\": 1589.9478295659665\n  },\n  \"completed_at\": \"string\",\n  \"error_message\": \"string\",\n  \"failed_node_id\": \"string\",\n  \"failed_node_label\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2933e833-1981-498d-9734-79a7592f1ba6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows","runs",":run_id","stop"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5e5d7925-5058-49a7-82af-616a7ec2d0c8","name":"List Flow Run Steps","request":{"name":"List Flow Run Steps","description":{"content":"List the audit-trail rows for a single flow run, oldest first.\n\nEach row is enriched from the CURRENT ``flows.definition``:\n  * ``node_label`` — editor-visible label (``display_name`` →\n    snapshot ``label``/``name`` → derived).\n  * ``node_config_snapshot`` — a curated subset of the node's\n    current config (e.g. for ``collect_input``: ``validation``,\n    ``max_attempts``, ``on_timeout_node_id``, ``prompt``).\n    **NOT** a point-in-time snapshot of what the engine executed —\n    callers that need that fidelity should rely on ``input_snapshot``.\n  * ``branch_taken`` — best-effort from\n    ``output_snapshot.chosen_branch``.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","steps"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"100"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"251fd027-f8ca-4d78-8981-f42cf2d92c4d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","steps"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"100"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a853ee9a-175a-4daf-92e3-936bcfa9ff11","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","steps"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"100"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ce216675-27b8-4756-9ab0-5ffc4f1283e9","name":"Get Observability Funnel","request":{"name":"Get Observability Funnel","description":{"content":"Per-node funnel for Observability v2.\n\nReturns ``items`` in canvas order with ``count`` (distinct runs that\nsuccessfully executed the node) and ``drop_from_previous`` (fraction\nlost between consecutive nodes). The first row is always the trigger.\n\nWindow defaults to the last 30 days.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","observability","funnel"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"since","value":"string","description":"ISO8601 UTC start"},{"disabled":false,"key":"until","value":"string","description":"ISO8601 UTC end"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3a12e704-ef98-47c1-8c1e-904d0bf960d5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","observability","funnel"],"host":["{{baseUrl}}"],"query":[{"key":"since","value":"string"},{"key":"until","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total_entered\": 3210\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a8829aec-a3a0-4717-b602-b17636646cb2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","observability","funnel"],"host":["{{baseUrl}}"],"query":[{"key":"since","value":"string"},{"key":"until","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"603efdc9-dcde-4ec4-a4d0-cdaf33c86a5b","name":"Get Observability Channels","request":{"name":"Get Observability Channels","description":{"content":"Per-channel sent / delivered / opened / replied % for a flow.\n\nCounts every outbound message tagged with this flow's runs in the\nwindow, group by ``platform``. ``reply_pct`` is inbound messages\n(also tagged to a run of this flow) divided by ``sent`` per channel.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","observability","channels"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"since","value":"string","description":"ISO8601 UTC start"},{"disabled":false,"key":"until","value":"string","description":"ISO8601 UTC end"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5aaa9896-1bb7-43f1-8e9f-a126b04484c4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","observability","channels"],"host":["{{baseUrl}}"],"query":[{"key":"since","value":"string"},{"key":"until","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3b3f4f72-bb2f-44bb-bf79-ce5e570c2e5b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","observability","channels"],"host":["{{baseUrl}}"],"query":[{"key":"since","value":"string"},{"key":"until","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2794f703-1d1d-4920-851a-ed388ac30078","name":"Get Run Replay","request":{"name":"Get Run Replay","description":{"content":"Per-contact replay timeline for a single flow run.\n\nMerges ``flow_run_steps`` (engine audit trail) with ``messages``\n(outbound + inbound tagged with this ``flow_run_id``) into a single\ntime-ordered event stream. Returns the contact header + the run\nsummary + the full event list.\n\n**Required Scopes:** `flows:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","replay"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"923eea79-192a-4e34-836e-e8dcec685058","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","replay"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"avatar_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"run\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flow_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"completed_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"current_node_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"events\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3b6a463c-b596-4346-9ad3-a03d8289d190","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","replay"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ed611a78-3121-4982-b962-51e85d32bc66","name":"List Flow Run Messages","request":{"name":"List Flow Run Messages","description":{"content":"List every message attributed to a single flow run, oldest-first.\n\nReturns the chronological transcript of outbound (Send-node) and\ninbound (Wait-for-reply matched) messages stamped with this\n``flow_run_id``. Reuses the existing\n``idx_msg_flow_run_id`` / ``idx_messages_tenant_flow_run`` index.\n\n404 when the run does not exist on this tenant OR when the run\nexists but does not belong to ``flow_id`` — never leak cross-tenant\nruns.\n\n**Required Scopes:** `flows:read` AND `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","messages"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f590f25e-fb8e-455b-b3c8-73b17ac88f04","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","messages"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_more\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a0ead9c8-c390-4754-a02e-c28181f7fd89","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","flows",":flow_id","runs",":run_id","messages"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"run_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c62c6697-968b-4bf2-be04-ada3a5b60764","name":"List Flow Runs For Contact","request":{"name":"List Flow Runs For Contact","description":{"content":"List flow runs for a specific contact.\n\nUsed by the contact-detail \"Flows\" tab. When ``status`` is omitted the\nresponse defaults to active runs (``running`` + ``waiting``) — the rows\na user expects to see. Pass an explicit status to inspect history.\n\n**Required Scopes:** `flows:read` AND `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","flow-runs"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"completed","description":"Filter by run status. Defaults to active runs (running + waiting) when omitted."},{"disabled":false,"key":"flow_id","value":"string","description":"Filter to a specific flow"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ea6ece10-84ca-4cc5-b2dd-9460cdf5a34c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","flow-runs"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"completed"},{"key":"flow_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f0770c7c-7fc0-42de-8fda-bf763bcd9882","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","flow-runs"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"completed"},{"key":"flow_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"5d1b9c27-e6fc-4c87-9fb4-686f40d064d4","name":"HubSpot Integration","description":{"content":"Manage the HubSpot integration including contact sync, segments, and embedded cards.","type":"text/plain"},"item":[{"id":"a45a53e4-2b91-4d8d-b697-0f6e96ceb764","name":"Hubspot Status","request":{"name":"Hubspot Status","description":{"content":"Connection state + sync configuration for the current tenant.\n\n**Required Scopes:** `settings:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","status"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"886f0a93-e387-43bf-9136-3767b5889b8f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","status"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"connected\": true,\n  \"is_connected\": false,\n  \"portal_id\": 2344,\n  \"sync_direction\": \"string\",\n  \"sync_transcripts\": true,\n  \"connected_at\": \"string\",\n  \"status\": \"string\",\n  \"hub_id\": 9219,\n  \"hub_domain\": \"string\",\n  \"granted_scopes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sync_direction_config\": {\n    \"key_0\": 2020.0332414031975\n  },\n  \"field_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"contact_method_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"sendseven_link_completed\": false,\n  \"linked_contacts\": 0,\n  \"last_full_sync_at\": \"string\",\n  \"installed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e5a63adb-66c0-46bf-86b7-4c7ccd618044","name":"Hubspot Update Settings","request":{"name":"Hubspot Update Settings","description":{"content":"Update sync direction toggles and/or field-mapping overrides.\n\n**Required Scopes:** `settings:update` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"sync_direction_config\": {\n    \"key_0\": 5943.48886175332,\n    \"key_1\": 3667\n  },\n  \"field_mapping_config\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"field_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"contact_method_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"sync_direction\": \"string\",\n  \"sync_transcripts\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"eba2c540-b836-4b01-9de5-cd6b4365bcb8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"sync_direction_config\": {\n    \"key_0\": 5943.48886175332,\n    \"key_1\": 3667\n  },\n  \"field_mapping_config\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"field_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"contact_method_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"sync_direction\": \"string\",\n  \"sync_transcripts\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"connected\": true,\n  \"is_connected\": false,\n  \"portal_id\": 2344,\n  \"sync_direction\": \"string\",\n  \"sync_transcripts\": true,\n  \"connected_at\": \"string\",\n  \"status\": \"string\",\n  \"hub_id\": 9219,\n  \"hub_domain\": \"string\",\n  \"granted_scopes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sync_direction_config\": {\n    \"key_0\": 2020.0332414031975\n  },\n  \"field_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"contact_method_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"sendseven_link_completed\": false,\n  \"linked_contacts\": 0,\n  \"last_full_sync_at\": \"string\",\n  \"installed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0047b8a3-1e5d-4953-84ce-72eded7cf185","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"sync_direction_config\": {\n    \"key_0\": 5943.48886175332,\n    \"key_1\": 3667\n  },\n  \"field_mapping_config\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"field_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"contact_method_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"sync_direction\": \"string\",\n  \"sync_transcripts\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ebce5165-764d-4108-80ac-3ce3753f45f3","name":"Hubspot Disconnect","request":{"name":"Hubspot Disconnect","description":{"content":"Disconnect HubSpot: best-effort token revoke, then status=disconnected.\nThe row is kept for audit / clean re-install.\n\n**Required Scopes:** `settings:update` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","connection"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"eb227878-b078-4f02-be89-f51f10037efa","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","connection"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f696e023-9e75-408f-b487-83ad41e4154f","name":"Hubspot Contact Count","request":{"name":"Hubspot Contact Count","description":{"content":"Count the connected HubSpot portal's contacts, optionally scoped by a draft\n``filter`` (unsaved ``filter_groups``) and/or a ``list_id`` — this powers the\nlive \"X contacts match\" preview while a selective-sync filter is being\nedited. Backed by a HubSpot Search (``POST /crm/v3/objects/contacts/search``\nwith ``limit:0``) that returns the server-side ``total`` in ~0.3s; results\nare cached ≤5 min unless ``refresh=true``.\n\n**Required Scopes:** `settings:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","contacts","count"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"filter","value":"string","description":"URL-encoded filter_groups JSON (OR across groups, AND within). Omit `filter` AND `list_id` to count the whole portal."},{"disabled":false,"key":"list_id","value":"string","description":"Count only this HubSpot list's members"},{"disabled":false,"key":"refresh","value":"false","description":"Bypass the ≤5-min server cache (live-preview edits)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"258b273b-f25e-433f-b8d7-9d171535f0cd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","contacts","count"],"host":["{{baseUrl}}"],"query":[{"key":"filter","value":"string"},{"key":"list_id","value":"string"},{"key":"refresh","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"total\": 4483,\n  \"cached\": false,\n  \"as_of\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"591eba0c-920b-41e2-bef2-9b3a4550766f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","contacts","count"],"host":["{{baseUrl}}"],"query":[{"key":"filter","value":"string"},{"key":"list_id","value":"string"},{"key":"refresh","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"123434d3-db92-4921-a463-ab38a38f42e4","name":"Hubspot Get Contact Sync Filter","request":{"name":"Hubspot Get Contact Sync Filter","description":{"content":"Read the persisted selective contact-sync filter. Returns the pre-feature\ndefault (``mode = none`` — import everything) when nothing is stored yet.\n\n**Required Scopes:** `settings:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","contact-sync-filter"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"098f7ddd-446b-49ea-b350-6256a51b6ab3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","contact-sync-filter"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"mode\": \"none\",\n  \"version\": 1,\n  \"properties\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"updated_at\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bab4d3ed-13a8-440f-bcf3-0b1c01db7475","name":"Hubspot Put Contact Sync Filter","request":{"name":"Hubspot Put Contact Sync Filter","description":{"content":"Persist the selective contact-sync filter. The filter is VALIDATED against\nHubSpot on save (a HubSpot 400 surfaces its own limit message); persisting\nALSO increments ``sync_generation`` so a sync run using the previous filter\nself-interrupts. Narrowing stops adding non-matching contacts but does not\ndelete already-synced ones; widening does not auto-backfill (import is a\nseparate explicit action).\n\n**Required Scopes:** `settings:update` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","contact-sync-filter"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"none\",\n  \"version\": 1,\n  \"properties\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"updated_at\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"66415075-1047-4df7-a9d7-2ebf3fd34cdf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","contact-sync-filter"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"none\",\n  \"version\": 1,\n  \"properties\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"updated_at\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"mode\": \"none\",\n  \"version\": 1,\n  \"properties\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"updated_at\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3ce59d9b-b921-4a82-a9c9-501927078cd7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","contact-sync-filter"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"none\",\n  \"version\": 1,\n  \"properties\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"updated_at\": \"string\",\n  \"updated_by_user_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e981c289-a17a-42a4-bb72-658c3eb88566","name":"Hubspot Import","request":{"name":"Hubspot Import","description":{"content":"Import contacts from HubSpot (all contacts, or one list's members).\n\n**Required Scopes:** `contacts:create` or `contacts:update` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","sync","import"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"list_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2346bff7-0f10-4d98-8085-4040515f800c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","sync","import"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"list_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2adbaa58-8bc5-4d79-b6e6-4bfabe951dc6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","sync","import"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"list_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae597829-308d-43fb-af27-5df71742ccdf","name":"Hubspot Export","request":{"name":"Hubspot Export","description":{"content":"Export SendSeven contacts to HubSpot (batch upsert by email).\n\n**Required Scopes:** `contacts:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","sync","export"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_ids\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2e16bb8a-2cf0-47dc-91e6-6004388937f5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","sync","export"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_ids\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"56fa7fe4-cad2-4d54-9e0c-4a8f0e0825ea","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","sync","export"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_ids\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"25793355-1f0f-4582-b6a9-ed30172fa6b0","name":"Hubspot Migrate List","request":{"name":"Hubspot Migrate List","description":{"content":"Migrate a HubSpot list into a NEW SendSeven newsletter list (imports the\nmembers, creates the list, subscribes them via the unified subscription\nsystem) — the \"migrate leads -> send campaign\" flow.\n\n**Required Scopes:** `lists:create` or `contacts:create` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","lists","migrate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"hubspot_list_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list_name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a3964042-db3d-4f3a-a152-a0271cc2dd8c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","lists","migrate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"hubspot_list_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list_name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ff3f3e53-405c-4c63-83b8-528dd677f71c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","lists","migrate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"hubspot_list_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"list_name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a6867a09-6030-44d3-8d25-4baaf082ef46","name":"Hubspot List Properties","request":{"name":"Hubspot List Properties","description":{"content":"List the connected portal's HubSpot contact properties — feeds the settings\nfield-mapping dropdown (replacing free-text property inputs). Each item:\n``name``, ``label``, ``type``, ``field_type``, ``group_name``, ``custom``.\n\nAlso returns ``targets``: the mappable-target catalogue for the\n\"Contact methods\" and \"Social media profiles\" settings sections —\n``{\"contact_methods\": [{\"target\": \"email\", \"label\": \"Email (primary)\"}, ...],\n\"social_profiles\": [{\"target\": \"linkedin\", \"label\": \"LinkedIn\"}, ...]}``.\nPair a HubSpot property (from ``items``) with one or more of these\ntargets to build the ``contact_method_mapping`` sent to ``PATCH\n/settings``.\n\n**Required Scopes:** `settings:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","properties"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"75ec391f-7970-4a5a-b179-8e20f81bcfd4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","properties"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c51480eb-d871-418a-afbe-81daea2a27c5","name":"Hubspot Create Property","request":{"name":"Hubspot Create Property","description":{"content":"Create a new custom HubSpot contact property so it can be selected inline in\nthe field-mapping UI. Returns the created property in the same shape as the\nlist endpoint.\n\nNOTE: HubSpot requires the ``crm.schemas.contacts.write`` scope to create a\nproperty. If the connected portal did not grant it, this returns 400.\n\n**Required Scopes:** `settings:update` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","properties"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"label\": \"string\",\n  \"type\": \"string\",\n  \"fieldType\": \"text\",\n  \"groupName\": \"contactinformation\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a4199161-9de9-47c0-b54d-ce20357ac165","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","properties"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"label\": \"string\",\n  \"type\": \"string\",\n  \"fieldType\": \"text\",\n  \"groupName\": \"contactinformation\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b190433c-1dfa-4155-9e96-c02b55395af4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","properties"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"label\": \"string\",\n  \"type\": \"string\",\n  \"fieldType\": \"text\",\n  \"groupName\": \"contactinformation\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"869c2d93-b66a-400b-8319-05d76d693558","name":"Hubspot List Hubspot Lists","request":{"name":"Hubspot List Hubspot Lists","description":{"content":"List the connected portal's HubSpot lists, each annotated with whether a\nSendSeven ``HUBSPOT_SEGMENT`` list already backs it — the picker for\n\"target a HubSpot list\".\n\n**Required Scopes:** `lists:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","lists"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"after","value":"string","description":"Opaque pagination cursor"},{"disabled":false,"key":"search","value":"string","description":"Name search filter"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d031a3f5-97c4-4aff-8d20-67693b08a58e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","lists"],"host":["{{baseUrl}}"],"query":[{"key":"after","value":"string"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3f0fcc35-c575-4cd7-9296-f5dbd9ae7757","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","lists"],"host":["{{baseUrl}}"],"query":[{"key":"after","value":"string"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"15d8be5d-4c3b-425d-aa2b-03a462fed353","name":"Hubspot Create Segment","request":{"name":"Hubspot Create Segment","description":{"content":"Create a SendSeven list whose membership is backed by a live HubSpot list.\nThe list can then be used as a campaign audience; members are resolved\nthrough the normal newsletter recipient funnel (reachability + opt-out +\nper-channel fan-out) at send time (or from cache in ``cached`` mode).\n\n**Required Scopes:** `lists:create` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","segments"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"hubspot_list_id\": \"string\",\n  \"name\": \"string\",\n  \"refresh_mode\": \"send_time\",\n  \"interval_minutes\": 646,\n  \"unresolved_policy\": \"reachable_only\",\n  \"method_scope\": \"all_reachable\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f344747a-7e44-45b1-a2ed-25479d588413","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","segments"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"hubspot_list_id\": \"string\",\n  \"name\": \"string\",\n  \"refresh_mode\": \"send_time\",\n  \"interval_minutes\": 646,\n  \"unresolved_policy\": \"reachable_only\",\n  \"method_scope\": \"all_reachable\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"list_type\": \"string\",\n  \"description\": \"string\",\n  \"hubspot_connection_id\": \"string\",\n  \"hubspot_list_id\": \"string\",\n  \"hubspot_segment_config\": {\n    \"key_0\": \"string\",\n    \"key_1\": true,\n    \"key_2\": \"string\"\n  },\n  \"contact_count\": \"string\",\n  \"created_at\": \"1952-09-04T02:26:24.889Z\",\n  \"updated_at\": \"1979-01-07T07:27:36.531Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1b875a37-fbb0-4ce3-b6f2-55bccd21282f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","segments"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"hubspot_list_id\": \"string\",\n  \"name\": \"string\",\n  \"refresh_mode\": \"send_time\",\n  \"interval_minutes\": 646,\n  \"unresolved_policy\": \"reachable_only\",\n  \"method_scope\": \"all_reachable\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0d80d634-e3c3-4afb-9ce3-b7f4ed80d6c9","name":"Hubspot Update Segment","request":{"name":"Hubspot Update Segment","description":{"content":"Update a HubSpot segment's name and/or resolution config (refresh mode,\ninterval, unresolved policy, method scope).\n\n**Required Scopes:** `lists:update` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","segments",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"refresh_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"interval_minutes\": 841,\n  \"unresolved_policy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"method_scope\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f76f3f59-a0ec-46c2-9230-b41016387a54","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","segments",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"refresh_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"interval_minutes\": 841,\n  \"unresolved_policy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"method_scope\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"list_type\": \"string\",\n  \"description\": \"string\",\n  \"hubspot_connection_id\": \"string\",\n  \"hubspot_list_id\": \"string\",\n  \"hubspot_segment_config\": {\n    \"key_0\": \"string\",\n    \"key_1\": true,\n    \"key_2\": \"string\"\n  },\n  \"contact_count\": \"string\",\n  \"created_at\": \"1952-09-04T02:26:24.889Z\",\n  \"updated_at\": \"1979-01-07T07:27:36.531Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"da434ee5-749e-44e3-8fde-fd9d6c66417c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","segments",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"refresh_mode\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"interval_minutes\": 841,\n  \"unresolved_policy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"method_scope\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4811bfb7-9b3d-4245-92c0-d69aff91c658","name":"Hubspot Preview Segment","request":{"name":"Hubspot Preview Segment","description":{"content":"Preview a segment's audience: resolve a sample of the HubSpot list live and\nreport how many members map to existing contacts, how many would be\nauto-created, and how many are unresolved under the segment's policy.\n\nDry-run: this is non-mutating — it resolves and counts WITHOUT creating any\nlink or contact (``would_create`` is a projection, not an action). The real\nsend/sync/cached-refresh paths still eagerly link and create.\n\n**Required Scopes:** `lists:read` (+ Full Suite plan)","type":"text/plain"},"url":{"path":["api","v1","integrations","hubspot","segments",":list_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"f889c651-099d-4dc6-9d61-1972e2aeda0b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","segments",":list_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"total_members\": 6338,\n  \"resolved_contacts\": 5832,\n  \"would_create\": 7877,\n  \"unresolved_members\": 3144,\n  \"sampled\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7f5b49e8-8730-4c4a-8069-4a81aa29eef5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","integrations","hubspot","segments",":list_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"3d680050-cdc8-426a-9758-8ac262979f87","name":"Integrations","description":{"content":"Manage third-party integration connections and their configuration.","type":"text/plain"},"item":[{"id":"21e54e61-2c80-453d-a943-47d0f7d7573b","name":"List Integrations","request":{"name":"List Integrations","description":{"content":"List available integrations for the Integrations Hub.\n\n**Required Scopes:** `settings:read`\n\nReturns a static-ish catalog of integrations with a per-tenant\n``connected`` status. For API-token integrations (Zapier, n8n) the tenant is\nconsidered connected when it has at least one active (non-revoked,\nnon-expired) API token. External-link cards (docs, partners) are never\n\"connected\".","type":"text/plain"},"url":{"path":["api","v1","integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ee471b9f-f51f-469a-9f2e-5a9658eaa81b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","integrations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"3e08c6a8-4668-4d08-accd-3f65747511a2","name":"Invitations","description":{"content":"Invite new team members to your tenant with role-based access control.","type":"text/plain"},"item":[{"id":"ff29cc31-50d4-49ce-96ac-ee17095825e7","name":"Get tenant invitations","request":{"name":"Get tenant invitations","description":{"content":"Get all invitations for a tenant (requires ADMIN or OWNER)\n\n**🔐 Required Scopes:** `team:read`\n","type":"text/plain"},"url":{"path":["api","v1","invitations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"85a4ba54-f016-4235-b2f1-063861d4f83d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invitations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"invitations\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 6427\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9e942415-4e32-40f1-87c8-2be8b4a452d9","name":"Create invitation","request":{"name":"Create invitation","description":{"content":"Invite a user to join a tenant (requires ADMIN or OWNER role)\n\n**🔐 Required Scopes:** `team:create`\n","type":"text/plain"},"url":{"path":["api","v1","invitations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"BC1@RlOzmgtsKYKpAgiwQEuvBPgTGEoHQwZ.mmb\",\n  \"role_id\": \"string\",\n  \"role\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7b644f8f-2d8f-4e54-bea1-79e0498ae4e3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invitations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"BC1@RlOzmgtsKYKpAgiwQEuvBPgTGEoHQwZ.mmb\",\n  \"role_id\": \"string\",\n  \"role\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"email\": \"string\",\n  \"invited_role\": \"string\",\n  \"invited_by_user_id\": \"string\",\n  \"invitation_token\": \"string\",\n  \"status\": \"pending\",\n  \"expires_at\": \"1971-03-20T12:09:20.261Z\",\n  \"created_at\": \"1972-07-24T22:11:38.322Z\",\n  \"accepted_at\": \"2023-12-18T13:04:14.650Z\",\n  \"declined_at\": \"1998-09-22T23:35:07.146Z\",\n  \"updated_at\": \"1958-09-09T05:24:41.603Z\",\n  \"tenant_name\": \"string\",\n  \"invited_by_name\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0bacab27-8c88-4dc4-80ed-aee4421af6c5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invitations"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"BC1@RlOzmgtsKYKpAgiwQEuvBPgTGEoHQwZ.mmb\",\n  \"role_id\": \"string\",\n  \"role\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fdb43b1d-415d-4a01-b8d9-b9d325727b22","name":"Accept invitation","request":{"name":"Accept invitation","description":{"content":"Accept invitation with security hardening (rate limited, email verified)","type":"text/plain"},"url":{"path":["api","v1","invitations",":token","accept"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"23aa40e9-0391-4de8-a65c-07212daf23bf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invitations",":token","accept"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"tenant_id\": \"string\",\n  \"tenant_name\": \"string\",\n  \"role\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"327012e6-5261-4caf-aaa8-c888fb2ed02f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invitations",":token","accept"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"69bfc2ac-ea1b-4d05-8a4c-1054c77128de","name":"Decline invitation","request":{"name":"Decline invitation","description":{"content":"Decline an invitation to join a tenant","type":"text/plain"},"url":{"path":["api","v1","invitations",":token","decline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"7d004b6e-74fb-4612-bf30-9f469d81202a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invitations",":token","decline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"44a9ceaa-97ef-4783-8768-b39c774b5cef","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invitations",":token","decline"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7d332716-ef78-49a9-b36e-5c1843078610","name":"Resend invitation","request":{"name":"Resend invitation","description":{"content":"Resend an invitation with a new token and expiry (requires ADMIN or OWNER)\n\n**🔐 Required Scopes:** `team:create`\n","type":"text/plain"},"url":{"path":["api","v1","invitations",":invitation_id","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invitation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"94d89788-3277-47b1-9a70-66fcfd8fe7ae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invitations",":invitation_id","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invitation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\",\n  \"invitation\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"email\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"invited_role\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"invited_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"invitation_token\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"expires_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"accepted_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"declined_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"invited_by_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"71779b81-5ce1-41dc-907d-d8527725b21f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invitations",":invitation_id","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invitation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2d7383fd-2eea-40fb-8ae4-4d3f778d1dba","name":"Delete (cancel) invitation","request":{"name":"Delete (cancel) invitation","description":{"content":"Delete/cancel an invitation in any status (requires ADMIN or OWNER)\n\n**🔐 Required Scopes:** `team:create`\n","type":"text/plain"},"url":{"path":["api","v1","invitations",":invitation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invitation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"13a79988-aa63-4560-96ec-c4dc678b6f09","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invitations",":invitation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invitation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"34b765d0-7fd6-4616-a5c2-97bca04ef7e7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invitations",":invitation_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invitation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"9c2a2582-2dee-4828-9770-279b3210491d","name":"Invoices","description":{"content":"View and download billing invoices, payment history, and usage breakdowns.","type":"text/plain"},"item":[{"id":"e1c553fa-b150-40d1-9c07-531665a99a54","name":"Preview Upcoming Invoice","request":{"name":"Preview Upcoming Invoice","description":{"content":"Preview upcoming charges for the current billing period.\n\nShows detailed line items with connection-level breakdown:\n- \"WhatsApp Messages +49171231231\" - 100 x EUR 0.005\n- \"Telegram Messages @MyBot\" - 50 x EUR 0.005\n\n**Required Scopes:** `billing:read`","type":"text/plain"},"url":{"path":["api","v1","invoices","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e92ac304-e541-4eb0-aad7-c7315ad14fae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invoices","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"billing_account_id\": \"string\",\n  \"period_start\": \"1998-01-08T02:03:22.473Z\",\n  \"period_end\": \"1982-11-29T06:27:44.757Z\",\n  \"line_items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"subtotal_euros\": \"002821468.7\",\n  \"total_euros\": \"0000039.61419\",\n  \"subtotal_cents\": 2093,\n  \"total_cents\": 2129,\n  \"minimum_spend_euros\": \"0\",\n  \"minimum_spend_adjustment_euros\": \"0\",\n  \"package_type\": \"PAY_AS_YOU_GO\",\n  \"currency\": \"EUR\",\n  \"is_preview\": true,\n  \"tenant_breakdown\": {\n    \"key_0\": 5584.413967606533\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"16b26926-5f0f-4949-afc1-992e3ad32e41","name":"List Invoices","request":{"name":"List Invoices","description":{"content":"List past invoices from Stripe.\n\nReturns paginated list of invoices with status, amounts, and download links.\n\n**Required Scopes:** `billing:read`","type":"text/plain"},"url":{"path":["api","v1","invoices"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"edbf4d5a-af69-4575-884b-86b8685cf88f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invoices"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 412,\n  \"page\": 6720,\n  \"page_size\": 7947,\n  \"total_pages\": 6956\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cbd77df9-a742-4741-b58a-bb635f92042e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invoices"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"95556844-9f09-4df0-8931-4195bf022ae3","name":"Get Invoice","request":{"name":"Get Invoice","description":{"content":"Get invoice details including line items.\n\nReturns full invoice with itemized charges showing connection-level detail.\n\n**Required Scopes:** `billing:read`","type":"text/plain"},"url":{"path":["api","v1","invoices",":invoice_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invoice_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"de350d77-4a76-4f6c-a5ea-72fc5523cd09","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","invoices",":invoice_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invoice_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"stripe_invoice_id\": \"string\",\n  \"status\": \"string\",\n  \"period_start\": \"1978-03-10T18:47:59.777Z\",\n  \"period_end\": \"1986-04-09T12:17:52.128Z\",\n  \"subtotal_euros\": \"0000006061683.\",\n  \"total_euros\": \"0476883016.942170580\",\n  \"amount_paid_euros\": \"007538181800.92\",\n  \"amount_due_euros\": \"-49.8330898\",\n  \"created_at\": \"1970-10-03T02:04:52.223Z\",\n  \"total_cents\": 5681,\n  \"invoice_pdf_url\": \"string\",\n  \"hosted_invoice_url\": \"string\",\n  \"paid_at\": \"1993-07-17T10:22:31.567Z\",\n  \"line_items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"91c4cb06-cf2e-494f-9e2f-0475bea0d98d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","invoices",":invoice_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"invoice_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"24953081-ec73-495c-9ed9-9571358424ae","name":"KB Folders","description":{"content":"Organize knowledge base articles into folders for structured AI retrieval.","type":"text/plain"},"item":[{"id":"c62a0b8e-ca43-4d89-ac41-561b6b1a7b26","name":"Update Document Folder","request":{"name":"Update Document Folder","description":{"content":"Move a document to a different folder.\n\n**Required Scopes:** `knowledge_base:update`\n\nSet folder_id to null to move to root (unorganized).\n\nReturns the updated document along with corpus move status.\nIf corpus_moved is false, AI search may not work correctly in the new folder.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"folder_id\": \"folder-uuid-123\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e72f078f-bd05-4f25-829b-d02c8eee1fb1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"folder_id\": \"folder-uuid-123\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"document_type\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"source_url\": \"string\",\n  \"folder_id\": \"string\",\n  \"gemini_file_name\": \"string\",\n  \"gemini_store_name\": \"string\",\n  \"uploaded_by_user_id\": \"string\",\n  \"corpus_moved\": true,\n  \"warning\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"937b58bc-5873-47f5-a552-d918c22461c5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"folder_id\": \"folder-uuid-123\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0b2c21d4-417e-4f02-bcf8-db92cfab6d90","name":"Get Folder","request":{"name":"Get Folder","description":{"content":"Get a single folder by ID.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5ef2a8b1-6129-4349-bc12-bb7c471b89db","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"is_system\": true,\n  \"sort_order\": 1691,\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"parent_id\": \"string\",\n  \"document_count\": 0,\n  \"has_corpus\": false,\n  \"is_ai_searchable\": true,\n  \"children\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f6b290ea-70db-45b0-94f9-e40d16e3158a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b9a5c113-a385-4798-af18-d577d738ed73","name":"Update Folder","request":{"name":"Update Folder","description":{"content":"Update a folder (rename, move, reorder, toggle AI searchability).\n\n**Required Scopes:** `knowledge_base:update`\n\nSystem folders cannot be modified (except is_ai_searchable).","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"is_ai_searchable\": true,\n  \"name\": \"Updated Folder Name\",\n  \"sort_order\": 10\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"175a7b07-58e0-4ac4-a83e-b9d3fa23ad6f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"is_ai_searchable\": true,\n  \"name\": \"Updated Folder Name\",\n  \"sort_order\": 10\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"is_system\": true,\n  \"sort_order\": 1691,\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"parent_id\": \"string\",\n  \"document_count\": 0,\n  \"has_corpus\": false,\n  \"is_ai_searchable\": true,\n  \"children\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"08001c32-8c69-4e31-96ee-67ef474cfc17","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"is_ai_searchable\": true,\n  \"name\": \"Updated Folder Name\",\n  \"sort_order\": 10\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c37cdfd8-e074-47a3-9ad6-87b38160c1fc","name":"List Folders","request":{"name":"List Folders","description":{"content":"List all folders as a tree structure.\n\n**Required Scopes:** `knowledge_base:read`\n\nReturns hierarchical folder structure with document counts.\nSystem folders (General, Websites, Ticket Summaries) are auto-created.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"fbd5139a-e3d4-4f64-8db4-37160d3fb4ca","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"children\": [],\n      \"is_system\": true,\n      \"name\": \"General\",\n      \"slug\": \"general\"\n    },\n    {\n      \"children\": [\n        {\n          \"children\": [],\n          \"is_system\": false,\n          \"name\": \"docs.example.com\",\n          \"slug\": \"docs-example-com\"\n        }\n      ],\n      \"is_system\": true,\n      \"name\": \"Websites\",\n      \"slug\": \"websites\"\n    }\n  ],\n  \"total\": 5\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1e8e4f59-c783-4efa-81e1-fca790efcf3e","name":"Create Folder","request":{"name":"Create Folder","description":{"content":"Create a new folder.\n\n**Required Scopes:** `knowledge_base:create`\n\nSystem folders cannot be created via API.\nMaximum folder depth is 3 levels.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"Product Documentation\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"708fc6f6-c184-402a-a137-111571c81c97","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"Product Documentation\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"is_system\": true,\n  \"sort_order\": 1691,\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"parent_id\": \"string\",\n  \"document_count\": 0,\n  \"has_corpus\": false,\n  \"is_ai_searchable\": true,\n  \"children\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6db50dd2-576a-4eb3-91b4-2d998ee2cdcd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"Product Documentation\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"73fe7bb8-c1c0-403c-8acc-6b8ac23f010d","name":"Get Folder Documents","request":{"name":"Get Folder Documents","description":{"content":"List documents in a folder.\n\n**Required Scopes:** `knowledge_base:read`\n\nSet include_subfolders=true to include documents from all descendant folders.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders",":folder_id","documents"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_subfolders","value":"false","description":"Include documents from child folders"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7c8f9c1b-6f2a-4764-bf08-420791674e8f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id","documents"],"host":["{{baseUrl}}"],"query":[{"key":"include_subfolders","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"dd838ff3-5afd-4864-83a9-b19e2af13fd0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id","documents"],"host":["{{baseUrl}}"],"query":[{"key":"include_subfolders","value":"false"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2c94bf4a-f844-428f-aad6-d01524b8281c","name":"Bulk Move Documents","request":{"name":"Bulk Move Documents","description":{"content":"Move multiple documents to a folder.\n\n**Required Scopes:** `knowledge_base:update`\n\nMaximum 100 documents per request.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","bulk-move"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_ids\": [\n    \"string\"\n  ],\n  \"folder_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"39f01707-ac3e-4e90-b529-17fc7ed5cb76","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","bulk-move"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_ids\": [\n    \"string\"\n  ],\n  \"folder_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"corpus_move_count\": 6,\n  \"failed_count\": 2,\n  \"failed_ids\": [\n    \"doc-uuid-3\",\n    \"doc-uuid-5\"\n  ],\n  \"success_count\": 8,\n  \"warnings\": [\n    \"No content found for document 'Old Guide' - AI search may not work correctly in new folder\",\n    \"Document 'Legacy Doc' was not in an AI corpus - may not be searchable in new folder\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bab0da9d-58dd-4e79-adbd-155f40b78c98","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","bulk-move"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_ids\": [\n    \"string\"\n  ],\n  \"folder_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7b894f23-bc87-4621-8615-51c0e215d408","name":"Recrawl Website Folder","request":{"name":"Recrawl Website Folder","description":{"content":"Re-crawl a website folder.\n\n**Required Scopes:** `knowledge_base:admin`\n\nOnly applicable to folders under \"Websites\" that have documents\nwith source URLs. Will re-fetch all pages and update content.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders",":folder_id","recrawl"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"clear_existing\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"339f4c77-867a-4ea5-96bd-b0cd871625e9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id","recrawl"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"clear_existing\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"job-uuid-123\",\n  \"message\": \"Website crawl job started. Use the poll_url to check progress.\",\n  \"poll_url\": \"/api/v1/knowledge-base/documents/crawl/job-uuid-123/status\",\n  \"status\": \"queued\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c1047c36-a60b-415c-adfe-13316dd5242a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id","recrawl"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"clear_existing\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f92fae54-4ed2-40b2-9de7-613be14b7100","name":"Get Bot Kb Folders","request":{"name":"Get Bot Kb Folders","description":{"content":"Get KB folder configuration for a bot.\n\n**Required Scopes:** `automation:read`\n\nReturns list of folders the bot uses for knowledge base search.\nIf empty, bot searches all folders.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","bots",":bot_id","kb-folders"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9963f786-863c-404b-8f41-d2ef6953a37f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","bots",":bot_id","kb-folders"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"bot_id\": \"bot-uuid-456\",\n  \"folders\": [\n    {\n      \"bot_id\": \"bot-uuid-456\",\n      \"folder_id\": \"folder-uuid-789\",\n      \"folder_name\": \"Product Documentation\",\n      \"folder_path\": \"Product Documentation\",\n      \"include_subfolders\": true\n    }\n  ],\n  \"total\": 1\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"eb74f212-6793-44be-97bc-85da2e6a41c9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","bots",":bot_id","kb-folders"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"026cdfeb-5e0b-43f2-ac4d-77c70c179e39","name":"Set Bot Kb Folders","request":{"name":"Set Bot Kb Folders","description":{"content":"Set KB folder configuration for a bot.\n\n**Required Scopes:** `automation:update`\n\nReplaces any existing folder assignments.\nTo search all folders, pass an empty list.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","bots",":bot_id","kb-folders"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"folders\": [\n    {\n      \"folder_id\": \"folder-uuid-1\",\n      \"include_subfolders\": true\n    },\n    {\n      \"folder_id\": \"folder-uuid-2\",\n      \"include_subfolders\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"64ba6606-5f33-4f90-90b5-bdc7a3ba0415","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","bots",":bot_id","kb-folders"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"folders\": [\n    {\n      \"folder_id\": \"folder-uuid-1\",\n      \"include_subfolders\": true\n    },\n    {\n      \"folder_id\": \"folder-uuid-2\",\n      \"include_subfolders\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"bot_id\": \"bot-uuid-456\",\n  \"folders\": [\n    {\n      \"bot_id\": \"bot-uuid-456\",\n      \"folder_id\": \"folder-uuid-789\",\n      \"folder_name\": \"Product Documentation\",\n      \"folder_path\": \"Product Documentation\",\n      \"include_subfolders\": true\n    }\n  ],\n  \"total\": 1\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"217864c9-954e-4d99-9986-a85e9f1dc488","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","bots",":bot_id","kb-folders"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"bot_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"folders\": [\n    {\n      \"folder_id\": \"folder-uuid-1\",\n      \"include_subfolders\": true\n    },\n    {\n      \"folder_id\": \"folder-uuid-2\",\n      \"include_subfolders\": false\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"6948cd1b-aa0f-4fa6-9bc1-0c7d113ed95a","name":"Knowledge Base","description":{"content":"Manage knowledge base articles, website crawls, and FAQ entries used by the AI assistant for answering customer queries.","type":"text/plain"},"item":[{"id":"6c197bed-f2e5-4564-b763-82dfd7d9a048","name":"Create Document","request":{"name":"Create Document","description":{"content":"Create a new knowledge base document (FAQ or manual with text content).\n\n**Required Scopes:** `knowledge_base:create`\n\nFor file uploads, use POST /documents/upload instead.\nFor website crawling, use POST /documents/crawl instead.\n\nIf folder_id is provided, the document will be uploaded to that folder's\nVertex AI corpus (multi-corpus architecture). If not provided, defaults\nto the General folder.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"To reset your password, click the 'Forgot Password' link on the login page...\",\n  \"document_type\": \"faq\",\n  \"folder_id\": \"folder-uuid-123\",\n  \"title\": \"How to reset your password\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2fa635ce-75e6-4a46-8ceb-2e5e889a153b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"To reset your password, click the 'Forgot Password' link on the login page...\",\n  \"document_type\": \"faq\",\n  \"folder_id\": \"folder-uuid-123\",\n  \"title\": \"How to reset your password\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"document_type\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"source_url\": \"string\",\n  \"folder_id\": \"string\",\n  \"gemini_file_name\": \"string\",\n  \"gemini_store_name\": \"string\",\n  \"uploaded_by_user_id\": \"string\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"job_id\": \"string\",\n  \"last_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"49744bb1-2459-4942-9823-690c23f7ed9d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"To reset your password, click the 'Forgot Password' link on the login page...\",\n  \"document_type\": \"faq\",\n  \"folder_id\": \"folder-uuid-123\",\n  \"title\": \"How to reset your password\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cb8eaefb-c74f-4b0c-b1dd-632234133d97","name":"List Documents","request":{"name":"List Documents","description":{"content":"List knowledge base documents for the tenant.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"document_type","value":"string","description":"Filter by document type"},{"disabled":false,"key":"search","value":"string","description":"Search by title or source URL"},{"disabled":false,"key":"folder_id","value":"string","description":"Filter by folder ID"},{"disabled":false,"key":"status","value":"string","description":"Filter by lifecycle status. Accepts a single status or a comma-separated list (OR filter). Values: pending_upload, pending_ingestion, ready, deleting, failed. Useful for polling: e.g. ?status=pending_ingestion,deleting"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"65552d4e-24c3-4f53-bc17-9551d07fe9a6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents"],"host":["{{baseUrl}}"],"query":[{"key":"document_type","value":"string"},{"key":"search","value":"string"},{"key":"folder_id","value":"string"},{"key":"status","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bfbd0e67-5b46-4a98-b5ff-ab0a0864c231","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents"],"host":["{{baseUrl}}"],"query":[{"key":"document_type","value":"string"},{"key":"search","value":"string"},{"key":"folder_id","value":"string"},{"key":"status","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"94970199-e630-40a1-ba37-71dcca11901f","name":"Upload Document File","request":{"name":"Upload Document File","description":{"content":"Upload a file (PDF, DOCX, etc.) as a knowledge base document.\n\n**Required Scopes:** `knowledge_base:create`\n\nSupported file types: PDF, DOCX, TXT, MD.\n\n**Async pipeline (B-4):**\n1. The file bytes are uploaded to GCS synchronously.\n2. A row is inserted with ``status='pending_ingestion'`` and a fresh ``job_id``.\n3. A ``kb_add_file`` Pub/Sub message is published to the KB administration\n   worker which performs the Vertex AI RAG import.\n4. This endpoint returns 202 immediately. Poll GET ``/jobs/{job_id}`` or\n   GET ``/documents/{id}`` to observe when ``status`` transitions to\n   ``ready`` (or ``failed`` with ``last_error`` populated).","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) "},{"key":"title","value":"string","type":"text","description":"(Required) "},{"key":"document_type","value":"uploaded_doc","type":"text","description":""},{"key":"folder_id","value":"string","type":"text","description":""}]}},"response":[{"id":"9483049e-9d8b-445c-8943-e03e47fbf014","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"},{"description":{"content":"(Required) ","type":"text/plain"},"key":"title","value":"string","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"document_type","value":"uploaded_doc","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"folder_id","value":"string","type":"text"}]}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"document_type\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"source_url\": \"string\",\n  \"folder_id\": \"string\",\n  \"gemini_file_name\": \"string\",\n  \"gemini_store_name\": \"string\",\n  \"uploaded_by_user_id\": \"string\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"job_id\": \"string\",\n  \"last_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7d5b7de7-35f5-4ac4-a90a-5b40e15c36f3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","upload"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"},{"description":{"content":"(Required) ","type":"text/plain"},"key":"title","value":"string","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"document_type","value":"uploaded_doc","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"folder_id","value":"string","type":"text"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"087ddc2e-3a81-4a72-b3f8-93942bafee03","name":"Upload Multiple Documents","request":{"name":"Upload Multiple Documents","description":{"content":"Upload multiple files at once to the knowledge base.\n\n**Required Scopes:** `knowledge_base:create`\n\nUp to 200 files per request. Each file is uploaded to GCS, gets its own\n``status='pending_ingestion'`` DB row + ``job_id``, and is dispatched to\nthe KB administration worker as an independent ``kb_add_file`` Pub/Sub\nmessage. Partial success is possible — a per-file GCS or publish failure\nrolls back only that file's row and surfaces as a ``success=false`` entry.\n\nSupported file types: PDF, DOCX, TXT, MD.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","upload-multiple"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"files","value":"[\"string\",\"string\"]","type":"text","description":"(Required) Files to upload (max 200 files)"},{"key":"document_type","value":"uploaded_doc","type":"text","description":""},{"key":"folder_id","value":"string","type":"text","description":""}]}},"response":[{"id":"02d4a610-c714-4995-92c3-1acc4d47875f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","upload-multiple"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) Files to upload (max 200 files)","type":"text/plain"},"key":"files","value":"[\"string\",\"string\"]","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"document_type","value":"uploaded_doc","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"folder_id","value":"string","type":"text"}]}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"total\": 9433,\n  \"successful\": 2837,\n  \"failed\": 7195,\n  \"results\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c98ddc4a-b1e5-40ec-8ec2-8da1ab58a015","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","upload-multiple"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) Files to upload (max 200 files)","type":"text/plain"},"key":"files","value":"[\"string\",\"string\"]","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"document_type","value":"uploaded_doc","type":"text"},{"description":{"content":"","type":"text/plain"},"key":"folder_id","value":"string","type":"text"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"21e76c41-3b32-4c24-ae66-6efb8b8d60fb","name":"Preview Crawl Url","request":{"name":"Preview Crawl Url","description":{"content":"Pre-crawl sanity check for a website URL (always HTTP 200).\n\n**Required Scopes:** `knowledge_base:admin`\n\nValidates the URL (scheme, hostname with a real domain ending, DNS, private\nnetwork block, reachability) and, when reachable, detects a sitemap and\ncounts the pages it lists so the UI can show \"sitemap found, N pages\"\nbefore the user starts the crawl.\n\n`valid=false` ⇒ `error_code` is one of `invalid_url`, `invalid_hostname`,\n`dns_unresolvable`, `blocked`, `unreachable`, `timeout`, `http_error`.\nThe same checks run server-side on every crawl start; this endpoint only\nlets the UI show the outcome early.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","crawl","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"019c97fe-2cb8-4259-b175-063a44d0e88c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"valid\": true,\n  \"input_url\": \"string\",\n  \"error_code\": \"string\",\n  \"error_message\": \"string\",\n  \"normalized_url\": \"string\",\n  \"final_url\": \"string\",\n  \"status_code\": 2641,\n  \"reachable\": false,\n  \"title\": \"string\",\n  \"sitemap\": {\n    \"found\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_index\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sample_urls\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"estimated_pages\": 1891,\n  \"max_pages_limit\": 1539\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0d5fce11-6a94-4f38-8be3-5a3bec2cae41","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5f0bfed3-8baf-458b-8a28-4a942c2d73f6","name":"Get Crawl Limits Endpoint","request":{"name":"Get Crawl Limits Endpoint","description":{"content":"Get the website-crawl page limit for the current workspace.\n\n**Required Scopes:** `knowledge_base:create`\n\n`max_pages` is the most pages a single crawl or re-crawl may request\n(`page_limit`). Requests above it are rejected with 422\n`crawl_page_limit_exceeded`. The limit is 2000 pages by default\n(`default_max_pages`); `is_custom=true` means it was raised for this\nworkspace. Contact `support_email` to request a higher limit.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","crawl","limits"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e7ea4b4a-818a-4069-9ceb-5091d42910c4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","crawl","limits"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"default_max_pages\": 2000,\n  \"is_custom\": false,\n  \"max_pages\": 2000,\n  \"support_email\": \"support@sendseven.com\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4f9ef7dd-2154-437f-b574-54a59d2bcb0d","name":"Crawl Website","request":{"name":"Crawl Website","description":{"content":"Start asynchronous website crawl job.\n\n**Required Scopes:** `knowledge_base:admin`\n\nThis endpoint immediately returns a job_id that can be used to track progress.\nThe actual crawling happens in a Pub/Sub background worker.\n\nUse GET /documents/crawl/{job_id}/status to check progress.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","crawl"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"follow_links\": true,\n  \"max_depth\": 3,\n  \"page_limit\": 50,\n  \"rate_limit\": 1,\n  \"refresh\": false,\n  \"title_prefix\": \"Example Docs\",\n  \"url\": \"https://docs.example.com\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6c05da46-ec79-488a-871e-23812051f2fd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"follow_links\": true,\n  \"max_depth\": 3,\n  \"page_limit\": 50,\n  \"rate_limit\": 1,\n  \"refresh\": false,\n  \"title_prefix\": \"Example Docs\",\n  \"url\": \"https://docs.example.com\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"job-uuid-123\",\n  \"message\": \"Website crawl job started. Use the poll_url to check progress.\",\n  \"poll_url\": \"/api/v1/knowledge-base/documents/crawl/job-uuid-123/status\",\n  \"status\": \"queued\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b3a2fb60-781f-4df8-ae9d-c10512e2938e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"follow_links\": true,\n  \"max_depth\": 3,\n  \"page_limit\": 50,\n  \"rate_limit\": 1,\n  \"refresh\": false,\n  \"title_prefix\": \"Example Docs\",\n  \"url\": \"https://docs.example.com\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"54e8e859-446e-49a2-9570-2fdeed502331","name":"Get Crawl Job Status","request":{"name":"Get Crawl Job Status","description":{"content":"Get status of website crawl job.\n\n**Required Scopes:** `knowledge_base:read`\n\nPoll this endpoint to track progress of an async crawl operation.\nStatus values: discovering, uploading, completed, failed","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","crawl",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"55b59d08-a26e-41a1-a012-a5afe2f04f4d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"base_url\": \"https://docs.example.com\",\n  \"completed_at\": \"2025-01-15T10:35:00Z\",\n  \"document_ids\": [\n    \"doc-1\",\n    \"doc-2\"\n  ],\n  \"documents_created\": 24,\n  \"errors\": [\n    \"Failed to fetch /private-page: 403 Forbidden\"\n  ],\n  \"job_id\": \"job-uuid-123\",\n  \"message\": \"Crawl completed successfully\",\n  \"pages_crawled\": 24,\n  \"pages_failed\": 1,\n  \"started_at\": \"2025-01-15T10:30:00Z\",\n  \"status\": \"completed\",\n  \"total_pages\": 25\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"543a4323-43ad-486e-9a53-9c647df993b6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl",":job_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3b811a25-2f5f-4b99-9404-dbb3d225e5bc","name":"Cancel Crawl Job","request":{"name":"Cancel Crawl Job","description":{"content":"Cancel a running website crawl job.\n\n**Required Scopes:** `knowledge_base:admin`\n\nOnly jobs in QUEUED, DISCOVERING, or UPLOADING status can be cancelled.\nThe worker will cooperatively check for CANCELLED status and stop processing.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","crawl",":job_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"9f39ddab-c0ba-4ae4-a748-a2d26a702499","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl",":job_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9c734e58-0454-45d0-82b9-b03366c54b4b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl",":job_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1163565b-7dfc-4ac4-81ac-941e3491b2a7","name":"List Active Crawl Jobs","request":{"name":"List Active Crawl Jobs","description":{"content":"List all active (non-completed) crawl jobs for the tenant.\n\n**Required Scopes:** `knowledge_base:read`\n\nReturns jobs that are currently in queued, discovering, uploading, or processing status.\nUse this to show running jobs when the page reloads.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","crawl","active"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3872e371-72cd-4bea-a50e-a7bc8b6f7c5c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawl","active"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"jobs\": [\n    {\n      \"base_url\": \"https://docs.example.com\",\n      \"discovered_count\": 25,\n      \"job_id\": \"job-uuid-123\",\n      \"message\": \"Discovering pages...\",\n      \"status\": \"discovering\"\n    }\n  ],\n  \"total\": 1\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c14725c0-f687-473d-9eff-ae8fbd1079b4","name":"Delete Document","request":{"name":"Delete Document","description":{"content":"Queue an async delete for a knowledge base document.\n\n**Required Scopes:** `knowledge_base:delete`\n\n**Async pipeline (B-4):**\n1. The row is flipped to ``status='deleting'`` with a fresh ``job_id``.\n2. A ``kb_delete_file`` Pub/Sub message is published.\n3. The KB administration worker performs the RAG file delete and then\n   removes the row. Poll GET ``/jobs/{job_id}`` to observe completion.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"222e6881-aec2-4343-b7e1-c898782e0fb9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Document deleted\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2fca821f-8565-4423-be3c-9dc370cad09b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"06530c35-2236-4dd9-a24c-47b13ddb0ca4","name":"Retry Document","request":{"name":"Retry Document","description":{"content":"Retry ingestion for a single knowledge base document.\n\n**Required Scopes:** `knowledge_base:create`\n\nRetryable documents are either ``status='failed'`` OR a *stuck*\n``status='pending_ingestion'`` row — one left un-imported under a crawl/\ningestion job that has since finished (see ``_pending_ingestion_is_stuck``:\nold enough and owned by no still-running job). Any other status — including\na ``pending_ingestion`` row whose ingestion job is still running — returns\n409. The GCS object already exists from the original upload, so this does\nNOT re-upload the file bytes — it re-derives the ``gcs_uri`` + folder corpus\nfrom the stored metadata, flips the row to ``status='pending_ingestion'``\nwith a fresh ``job_id`` and ``last_error=NULL``, and re-publishes the\n``kb_add_file`` Pub/Sub message. Returns the updated document (202).","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents",":document_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"c2dcaed4-8ba3-4320-a10d-c1267bf56af9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"document_type\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"source_url\": \"string\",\n  \"folder_id\": \"string\",\n  \"gemini_file_name\": \"string\",\n  \"gemini_store_name\": \"string\",\n  \"uploaded_by_user_id\": \"string\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"job_id\": \"string\",\n  \"last_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5dc517cf-3ae6-4d8f-9788-df494e67048c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1231b351-5ab0-4029-8204-1de8f13a1cb9","name":"Retry Failed Documents In Folder","request":{"name":"Retry Failed Documents In Folder","description":{"content":"Retry every failed document in a folder.\n\n**Required Scopes:** `knowledge_base:create`\n\nRe-queues every retryable document in the folder using the same per-document\nlogic as the single retry endpoint: all ``status='failed'`` documents, plus\nany ``status='pending_ingestion'`` document that is *stuck* — left un-imported\nunder a crawl/ingestion job that has since finished (see\n``_pending_ingestion_is_stuck``). A ``pending_ingestion`` row still owned by a\nrunning job is skipped, never re-queued. A folder with nothing to retry is not\nan error — it returns ``retried_count: 0``.\n\nReturns ``{\"success\": true, \"retried_count\": N}``.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders",":folder_id","retry-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"7c564244-a2f4-45b0-bd8e-b92d6e960f01","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id","retry-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"retried_count\": 7,\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6e3d5da1-955b-4ac3-b027-2c19832be78f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id","retry-failed"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4261affe-f4de-409b-8cd7-651ef9cd215b","name":"Bulk Delete Documents","request":{"name":"Bulk Delete Documents","description":{"content":"Queue async deletion for many documents at once.\n\n**Required Scopes:** `knowledge_base:delete`\n\nTransactional safety: rows are flipped to ``status='deleting'`` in a\nsingle transaction, then one ``kb_delete_file`` Pub/Sub message is\npublished per document. If publishing fails mid-batch, we revert all\naffected rows back to ``status='ready'`` and return 500.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","bulk-delete"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"932d2e6f-3132-446a-9349-b528cd625046","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","bulk-delete"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"queued\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"14d72f0f-88b2-4057-9a9d-d4fac843f011","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","bulk-delete"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"document_ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f1e9fa33-5487-430d-8234-715367c8b699","name":"Delete Folder","request":{"name":"Delete Folder","description":{"content":"Queue async deletion for a folder and all of its documents.\n\n**Required Scopes:** `knowledge_base:delete`\n\n1. The folder is flipped to ``status='deleting'``.\n2. All contained documents are flipped to ``status='deleting'`` and each\n   is dispatched as a ``kb_delete_file`` job.\n3. A single ``kb_delete_folder_finalize`` job is published; the worker\n   polls for document drain, then deletes the Vertex AI corpus and the\n   folder row.\n\nSystem folders cannot be deleted.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"dc5bdc54-f66c-410a-92da-d4c6bb54e444","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"folder_id\": \"string\",\n  \"queued_documents\": 1886,\n  \"job_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"74034ac2-93aa-4e06-9dcb-c1b426948112","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","folders",":folder_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"folder_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"aeeddd78-2508-425f-9079-6a98b1bd0fb4","name":"Get Kb Job Status","request":{"name":"Get Kb Job Status","description":{"content":"Poll the status of a KB admin job (upload, delete, folder delete).\n\n**Required Scopes:** `knowledge_base:read`\n\nA ``job_id`` can belong to either a document operation (uploaded or\ndeletion) or a folder deletion. The returned ``resource_type`` tells\nthe client which. Returns 404 if no resource carries this job_id.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9d310808-de3c-4fcd-825c-d336ab0ca69e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"resource_type\": \"folder\",\n  \"status\": \"string\",\n  \"document_id\": \"string\",\n  \"folder_id\": \"string\",\n  \"last_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e6505863-ee3d-4238-bb6d-5d93a3f6f652","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a18a4010-abb3-4979-807e-b785db50b8cb","name":"Search Knowledge Base","request":{"name":"Search Knowledge Base","description":{"content":"Search the knowledge base using Vertex AI RAG.\n\n**Required Scopes:** `knowledge_base:read`\n\n**Requires AI Features:** This endpoint requires AI features to be enabled\nin the billing account settings.\n\nReturns AI-generated answer with citations and sources.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","search"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"limit\": 5,\n  \"query\": \"How do I reset my password?\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"068e7747-1cb3-4dfc-823a-57130a364b3d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","search"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"limit\": 5,\n  \"query\": \"How do I reset my password?\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"answer\": \"To reset your password, navigate to the login page and click 'Forgot Password'. Enter your email address and follow the instructions sent to your inbox.\",\n  \"citations\": [\n    {\n      \"source\": \"Password Reset Guide\",\n      \"text\": \"Click 'Forgot Password'\"\n    }\n  ],\n  \"query\": \"How do I reset my password?\",\n  \"source_count\": 1,\n  \"sources\": [\n    {\n      \"document_id\": \"doc-123\",\n      \"title\": \"Password Reset Guide\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"317b6f90-d24b-405a-9e04-afc993186afc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","search"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"limit\": 5,\n  \"query\": \"How do I reset my password?\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8c771c20-1541-4766-8d6a-01cdf1da97f5","name":"List Ticket Summaries","request":{"name":"List Ticket Summaries","description":{"content":"List all conversation summaries stored in the knowledge base.\n\n**Required Scopes:** `knowledge_base:read`\n\nReturns conversations that have been AI-summarized.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","tickets"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b75565a6-6971-4bde-a053-4d0e66803002","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","tickets"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b6bf9890-45e5-47ec-adcc-6d45eb940b9d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","tickets"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"665d02d8-ba01-4ee6-8206-848ad5c49590","name":"Delete Ticket From Kb","request":{"name":"Delete Ticket From Kb","description":{"content":"Remove a conversation/ticket summary from the knowledge base.\n\n**Required Scopes:** `knowledge_base:delete`\n\nThe ticket_id parameter can be either a conversation ID (new) or legacy ticket ID.\nThis removes the document from Vertex AI RAG Corpus and clears\nthe gemini_document_name field.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","tickets",":ticket_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"ticket_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"7056ed4a-a680-4936-a5ab-2c3cd9bb2cc7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","tickets",":ticket_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"ticket_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Document deleted\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"124d806d-cc10-4e61-88fc-873ac3b78ef5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","tickets",":ticket_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"ticket_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3715d319-e187-4162-86b5-c2dedfab58e8","name":"List Crawled Domains","request":{"name":"List Crawled Domains","description":{"content":"List previously crawled domains with stored URL history.\n\n**Required Scopes:** `knowledge_base:read`\n\nReturns domains that have been crawled and have stored URL lists for\ndeterministic re-crawling. Use the returned history_id with the\n/documents/recrawl endpoint.\n\nDomains are only eligible for bulk re-crawl if they were last crawled\n14+ days ago. Individual page refreshes are always allowed.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","crawled-domains"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"dbce0a39-b573-4093-8fb0-c86d4a9e7cce","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","crawled-domains"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"domains\": [\n    {\n      \"base_url\": \"https://docs.example.com\",\n      \"crawled_at\": \"2025-01-15T10:35:00Z\",\n      \"domain\": \"docs.example.com\",\n      \"page_count\": 47\n    }\n  ],\n  \"total\": 1\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"20578b82-8da0-4842-8d3c-719806a95993","name":"Recrawl Domain","request":{"name":"Recrawl Domain","description":{"content":"Re-crawl a domain with non-destructive crawl-then-reconcile.\n\n**Required Scopes:** `knowledge_base:create`\n\n**Modes:**\n- `existing_pages`: Re-crawl the exact URLs from previous crawl history (faster, predictable scope)\n- `full_rescan`: Re-discover pages via sitemap/BFS from scratch (finds new pages, more thorough)\n\nBoth modes update existing documents in-place by matching source_url, create new documents\nfor newly discovered pages, and remove orphaned documents only after successful completion.\nExisting content remains intact if the crawl fails mid-way.\n\n**Note:** Domains must be at least 14 days old to be eligible for re-crawl.\nUse individual page refresh for more recent updates.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents","recrawl"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"clear_existing\": false,\n  \"history_id\": \"hist-uuid-123\",\n  \"mode\": \"full_rescan\",\n  \"page_limit\": 200,\n  \"title_prefix\": \"Docs\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a4238a6d-8a07-4f05-8b60-d2b59eba3003","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","recrawl"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"clear_existing\": false,\n  \"history_id\": \"hist-uuid-123\",\n  \"mode\": \"full_rescan\",\n  \"page_limit\": 200,\n  \"title_prefix\": \"Docs\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"job-uuid-123\",\n  \"message\": \"Website crawl job started. Use the poll_url to check progress.\",\n  \"poll_url\": \"/api/v1/knowledge-base/documents/crawl/job-uuid-123/status\",\n  \"status\": \"queued\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"31480de7-d98c-4b45-864b-e1f0ac208791","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents","recrawl"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"clear_existing\": false,\n  \"history_id\": \"hist-uuid-123\",\n  \"mode\": \"full_rescan\",\n  \"page_limit\": 200,\n  \"title_prefix\": \"Docs\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"aab69c5a-eb8b-4410-820e-0c4d128ee175","name":"Refresh Document","request":{"name":"Refresh Document","description":{"content":"Refresh a single document by re-fetching its source URL.\n\n**Required Scopes:** `knowledge_base:update`\n\nOnly works for website documents that have a source_url.\nRe-crawls the single page and updates the document content in-place.\n\nUses the document's folder corpus for multi-corpus architecture.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents",":document_id","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"15f7d544-08f6-4ac6-a48b-1b54d49b797b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"document_id\": \"doc-uuid-123\",\n  \"message\": \"Document refreshed successfully\",\n  \"source_url\": \"https://docs.example.com/getting-started\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1f0a9981-6896-4ac5-8258-666612542c9c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"910de6e6-e547-4eb2-8aa2-3f67c2468288","name":"Get Document Raw","request":{"name":"Get Document Raw","description":{"content":"Stream the raw UTF-8 text content of an editable KB document from GCS.\n\n**Required Scopes:** `knowledge_base:read`\n\nSupported document types: ``manual``, ``uploaded_doc``, ``faq`` — and only\nfor extensions ``.md`` / ``.txt`` / ``.html``. Returns 400 for PDFs,\nimages, crawled website pages, or any other non-editable type.\n\nFor inline-created FAQ/manual docs (no filename on record) the raw\ncontent is served from ``upload_metadata.content`` to avoid a spurious\nGCS miss for rows that predate the GCS-only flow.","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents",":document_id","raw"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"aed18dc5-9c5e-4e6f-a3ee-327f7e0df6db","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","raw"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"content\": \"string\",\n  \"mime_type\": \"string\",\n  \"editable\": true,\n  \"reason\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0446ac42-dcc6-4ddf-81af-b45f25a61a2b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","raw"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0bffa30b-a2dc-4b9d-849f-47af1beeedeb","name":"Put Document Raw","request":{"name":"Put Document Raw","description":{"content":"Replace the raw text content of an editable KB document.\n\n**Required Scopes:** `knowledge_base:update`\n\nBehaviour:\n  1. Validates size (≤ 1 MB) — returns 413 otherwise.\n  2. Validates that the document type + extension are editable\n     (otherwise 400, same rules as GET ``/raw``).\n  3. Uploads the new bytes to GCS (same path pattern as\n     ``upload_to_gcs()`` — ``rag_uploads/{tenant_id}/doc_{id}_{uuid}.{ext}``).\n  4. Updates the DB row: ``gemini_file_name`` / ``upload_metadata.gcs_uri``\n     point at the new blob, ``status`` → ``pending_ingestion``, a fresh\n     ``job_id`` is set, ``updated_at`` = ``utc_now()``.\n  5. Publishes a ``kb_add_file`` message to ``PUBSUB_TOPIC_KB_ADMINISTRATION``\n     so the KB administration worker performs the Vertex AI RAG import.\n     When ingestion completes, status transitions back to ``ready``.\n\nHTML is stored as-is — no sanitization (user controls the content).","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","documents",":document_id","raw"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f277e2c5-194c-4e54-a7d3-d8b90fc9f0cf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","raw"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"document_type\": \"string\",\n  \"title\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"source_url\": \"string\",\n  \"folder_id\": \"string\",\n  \"gemini_file_name\": \"string\",\n  \"gemini_store_name\": \"string\",\n  \"uploaded_by_user_id\": \"string\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"job_id\": \"string\",\n  \"last_error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cbee5981-fa3c-41a6-8054-0094ccd0a346","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","documents",":document_id","raw"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"document_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"3126d1ec-3217-4ff2-9401-f7de3de234f4","name":"Link Tracking","description":{"content":"Track link clicks in messages and campaigns with per-recipient analytics.","type":"text/plain"},"item":[{"id":"c79d66a6-cdf2-46c0-806e-ee39817c253d","name":"Create Tracked Link","request":{"name":"Create Tracked Link","description":{"content":"Create a tracked link with short URL.\n\nReturns a short URL that redirects to the original URL while tracking clicks.\n\nArgs:\n    request: Link creation request\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    TrackedLinkResponse: Created tracked link with short URL\n\n**🔐 Required Scopes:** `campaigns:update`\n","type":"text/plain"},"url":{"path":["api","v1","tracked-links"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"original_url\": \"string\",\n  \"feature_type\": \"other\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"metadata\": {\n    \"key_0\": 5659,\n    \"key_1\": 6916,\n    \"key_2\": 5815.575551558339,\n    \"key_3\": 4624.911612620673\n  },\n  \"expires_in_days\": 5408,\n  \"label\": \"string\",\n  \"tracking_mode\": \"shared\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d1ef3f0a-74d6-4e7c-95f7-fb78982ad925","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"original_url\": \"string\",\n  \"feature_type\": \"other\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"metadata\": {\n    \"key_0\": 5659,\n    \"key_1\": 6916,\n    \"key_2\": 5815.575551558339,\n    \"key_3\": 4624.911612620673\n  },\n  \"expires_in_days\": 5408,\n  \"label\": \"string\",\n  \"tracking_mode\": \"shared\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"short_code\": \"string\",\n  \"short_url\": \"string\",\n  \"original_url\": \"string\",\n  \"feature_type\": \"string\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"created_at\": \"1956-05-04T23:39:23.248Z\",\n  \"expires_at\": \"1969-10-14T10:00:14.539Z\",\n  \"is_active\": false,\n  \"click_count\": 6813\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7158744b-cf7b-4e30-b660-c7fba2bfd2c3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"original_url\": \"string\",\n  \"feature_type\": \"other\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"metadata\": {\n    \"key_0\": 5659,\n    \"key_1\": 6916,\n    \"key_2\": 5815.575551558339,\n    \"key_3\": 4624.911612620673\n  },\n  \"expires_in_days\": 5408,\n  \"label\": \"string\",\n  \"tracking_mode\": \"shared\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"97e777cd-89f3-40f8-a506-0211f356806f","name":"List Tracked Links","request":{"name":"List Tracked Links","description":{"content":"List all tracked links for tenant with pagination and filtering.\n\n**Required Scopes:** `link_tracking:read`\n\nQuery Parameters:\n- page: Page number (1-indexed, default: 1)\n- page_size: Items per page (1-100, default: 20)\n- search: Search term for original_url, label, short_code, or custom_alias\n- feature_type: Filter by feature type (email_campaign, conversation, etc.)\n- tags: Filter by tags (returns links matching ANY of the provided tags)\n\nReturns:\n    Paginated list of tracked links with total count","type":"text/plain"},"url":{"path":["api","v1","tracked-links"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page (max 100)"},{"disabled":false,"key":"search","value":"string","description":"Search in original_url, label, short_code, or custom_alias"},{"disabled":false,"key":"feature_type","value":"email_campaign","description":"Filter by feature type"},{"disabled":false,"key":"tags","value":"string","description":"Filter by tags (any match)"},{"disabled":false,"key":"tags","value":"string","description":"Filter by tags (any match)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ef234e2e-8e52-431b-afe7-66d6bb1e242f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"search","value":"string"},{"key":"feature_type","value":"email_campaign"},{"key":"tags","value":"string"},{"key":"tags","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 6680,\n  \"page\": 4939,\n  \"page_size\": 2165,\n  \"total_pages\": 6052\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"54a5b9d7-3621-42e8-b749-a6255bab1744","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"search","value":"string"},{"key":"feature_type","value":"email_campaign"},{"key":"tags","value":"string"},{"key":"tags","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9cb79bae-ae83-4cbf-9e27-b0c5306218d6","name":"Bulk Create Tracked Links","request":{"name":"Bulk Create Tracked Links","description":{"content":"Create multiple tracked links at once.\n\nUseful for email campaigns with multiple links.\nMaximum 100 URLs per request.\n\nArgs:\n    request: Bulk creation request\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    BulkCreateLinksResponse: Mapping of original URLs to short URLs\n\n**🔐 Required Scopes:** `campaigns:update`\n","type":"text/plain"},"url":{"path":["api","v1","tracked-links","bulk"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"urls\": [\n    \"string\",\n    \"string\"\n  ],\n  \"feature_type\": \"opt_in\",\n  \"feature_id\": \"string\",\n  \"expires_in_days\": 9968\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"13806454-2159-4d75-a652-31e53c44d669","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links","bulk"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"urls\": [\n    \"string\",\n    \"string\"\n  ],\n  \"feature_type\": \"flow\",\n  \"feature_id\": \"string\",\n  \"expires_in_days\": 1836\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"url_mapping\": {\n    \"key_0\": \"string\"\n  },\n  \"created_count\": 8515\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f20ab1b3-2148-4676-a272-d96acf422591","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links","bulk"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"urls\": [\n    \"string\",\n    \"string\"\n  ],\n  \"feature_type\": \"flow\",\n  \"feature_id\": \"string\",\n  \"expires_in_days\": 1836\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"004c0837-7632-4dd0-8934-4fb92b6df7f9","name":"Get Link Analytics","request":{"name":"Get Link Analytics","description":{"content":"Get analytics for a specific tracked link.\n\nIncludes:\n- Total clicks\n- Unique clicks (by IP)\n- Device breakdown\n- Click timeline\n\nArgs:\n    tracked_link_id: Tracked link ID\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    LinkAnalyticsResponse: Analytics data\n\n**🔐 Required Scopes:** `analytics:read`\n","type":"text/plain"},"url":{"path":["api","v1","tracked-links",":tracked_link_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tracked_link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"190a173c-2e02-4899-8347-636e0f67dc6b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links",":tracked_link_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tracked_link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tracked_link_id\": \"string\",\n  \"short_code\": \"string\",\n  \"short_url\": \"string\",\n  \"original_url\": \"string\",\n  \"feature_type\": \"string\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"label\": \"string\",\n  \"total_clicks\": 7976,\n  \"first_click_at\": \"string\",\n  \"last_click_at\": \"string\",\n  \"created_at\": \"string\",\n  \"expires_at\": \"string\",\n  \"is_active\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"451baccd-38f4-4fe0-9f4c-70dd37bc8456","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links",":tracked_link_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tracked_link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e55416d5-ac5d-4c8f-8bd7-f213804aeee1","name":"Get Feature Analytics","request":{"name":"Get Feature Analytics","description":{"content":"Get aggregate analytics for all links in a feature.\n\nUse this to get analytics for:\n- Email campaigns\n- Conversations\n- Automations\n- Reach campaigns\n\nArgs:\n    feature_type: Feature type (email_campaign, conversation, etc.)\n    feature_id: Feature ID (campaign ID, conversation ID, etc.)\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    FeatureAnalyticsResponse: Aggregate analytics\n\n**🔐 Required Scopes:** `analytics:read`\n","type":"text/plain"},"url":{"path":["api","v1","tracked-links","feature",":feature_type",":feature_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"email_campaign","key":"feature_type","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"feature_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0fffbfec-25e6-4ede-a78e-09b06639c76f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links","feature",":feature_type",":feature_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"email_campaign","key":"feature_type","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"feature_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"feature_type\": \"string\",\n  \"feature_id\": \"string\",\n  \"total_links\": 4286,\n  \"total_clicks\": 1038,\n  \"top_links\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"86351c74-ba48-493e-9fe3-6917efc62a4b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links","feature",":feature_type",":feature_id","analytics"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"email_campaign","key":"feature_type","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"feature_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"744a022e-f629-49e3-bf92-058ebcc4b4de","name":"Extract Urls","request":{"name":"Extract Urls","description":{"content":"Extract URLs from HTML or text content.\n\nUtility endpoint for finding links before creating tracked versions.\n\nArgs:\n    content: Dict with 'html' or 'text' key\n    tenant_id: Tenant ID from auth token\n\nReturns:\n    Dict with extracted URLs\n\n**🔐 Required Scopes:** `campaigns:update`\n","type":"text/plain"},"url":{"path":["api","v1","tracked-links","extract-urls"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": \"string\",\n  \"key_1\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c053e489-b9e4-4cd7-8448-132c9bb74486","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links","extract-urls"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": \"string\",\n  \"key_1\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"urls\": [\n    \"string\",\n    \"string\"\n  ],\n  \"count\": 8677\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cb62b4ed-01b3-4f02-b570-611f73754dd9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links","extract-urls"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"key_0\": \"string\",\n  \"key_1\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7f5e75d7-0b59-4fd8-bb63-d09c1b5eaba1","name":"Check Alias Availability","request":{"name":"Check Alias Availability","description":{"content":"Check if a custom alias is available.\n\n**Required Scopes:** `link_tracking:read`\n\nChecks both short_code and custom_alias columns to ensure uniqueness.\n\nArgs:\n    alias: The alias to check\n\nReturns:\n    Dict with availability status","type":"text/plain"},"url":{"path":["api","v1","tracked-links","check-alias",":alias"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"alias","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"bcfc10bf-03db-4774-96bb-07320c019954","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links","check-alias",":alias"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"alias","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"alias\": \"string\",\n  \"available\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6ff264e5-c977-4aa7-91f4-eea8594394e8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links","check-alias",":alias"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"alias","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"71abac22-f721-4896-a0d9-219b8a99c9cc","name":"Get Tracked Link","request":{"name":"Get Tracked Link","description":{"content":"Get a single tracked link with detailed click statistics.\n\n**Required Scopes:** `link_tracking:read`\n\nReturns full link details including:\n- Basic link info (short_code, original_url, etc.)\n- Custom alias, label, and tags\n- Click statistics (total clicks, unique clicks)\n- First and last click timestamps\n\nArgs:\n    link_id: Tracked link UUID\n\nReturns:\n    TrackedLinkDetail with full link info and stats","type":"text/plain"},"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f3456824-5634-4139-b0b7-d7e781dbad2d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"short_code\": \"string\",\n  \"short_url\": \"string\",\n  \"original_url\": \"string\",\n  \"feature_type\": \"string\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"custom_alias\": \"string\",\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"1990-11-20T06:55:16.040Z\",\n  \"expires_at\": \"1953-01-02T08:29:30.057Z\",\n  \"is_active\": true,\n  \"click_count\": 8306,\n  \"unique_clicks\": 0,\n  \"first_click_at\": \"2014-02-25T08:49:37.487Z\",\n  \"last_click_at\": \"2021-08-16T22:03:32.662Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c1065563-360f-44c1-9b96-2d8f9b050442","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"789faeae-97ee-4ff1-9c9e-edcdc6ba4bb1","name":"Update Tracked Link","request":{"name":"Update Tracked Link","description":{"content":"Update a tracked link.\n\n**Required Scopes:** `link_tracking:create`\n\nUpdates the following fields (only provided fields are updated):\n- label: User-friendly label\n- tags: List of tags for categorization\n- custom_alias: Custom short code (must be unique)\n- is_active: Whether the link is active\n\nNote: Changing custom_alias will also update the short_code used in the URL.\n\nArgs:\n    link_id: Tracked link UUID\n    request: Update request with optional fields\n\nReturns:\n    TrackedLinkDetail with updated link info","type":"text/plain"},"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"custom_alias\": \"oipab9v6r\",\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"4c18a95f-4230-49a9-bd94-1f2b6fdec6ca","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"custom_alias\": \"jyemhqob\",\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"short_code\": \"string\",\n  \"short_url\": \"string\",\n  \"original_url\": \"string\",\n  \"feature_type\": \"string\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"custom_alias\": \"string\",\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"1990-11-20T06:55:16.040Z\",\n  \"expires_at\": \"1953-01-02T08:29:30.057Z\",\n  \"is_active\": true,\n  \"click_count\": 8306,\n  \"unique_clicks\": 0,\n  \"first_click_at\": \"2014-02-25T08:49:37.487Z\",\n  \"last_click_at\": \"2021-08-16T22:03:32.662Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ef08e162-d96f-4f43-b27a-8ac2366f003d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"custom_alias\": \"jyemhqob\",\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ce0cff94-e165-426f-bd16-87a939228d57","name":"Delete Tracked Link","request":{"name":"Delete Tracked Link","description":{"content":"Delete a tracked link.\n\n**Required Scopes:** `link_tracking:delete`\n\nBy default, performs a soft delete (sets is_active=False).\nUse hard_delete=true to permanently remove the link and all click data.\n\nArgs:\n    link_id: Tracked link UUID\n    hard_delete: If true, permanently delete. If false, soft delete (default).\n\nReturns:\n    Success message","type":"text/plain"},"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"hard_delete","value":"false","description":"If true, permanently delete. If false, soft delete (deactivate)."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"a5a9475c-4ecb-4d54-a254-9f570e3c8e74","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[{"key":"hard_delete","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"be490dcd-888a-4caf-93f9-c2e2c676c278","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links",":link_id"],"host":["{{baseUrl}}"],"query":[{"key":"hard_delete","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"link_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7e38d33d-002e-4203-bce9-4517c0199193","name":"Create Manual Tracked Link","request":{"name":"Create Manual Tracked Link","description":{"content":"Create a manual tracked link for the standalone URL shortener.\n\n**Required Scopes:** `link_tracking:create`\n\nCreates a new shortened URL with an auto-generated 8-character code.\nUses feature_type=OTHER for manual links.\nUses tenant's preferred tracking domain from settings.\n\nArgs:\n    request: Link creation request with:\n        - original_url: Full destination URL (required)\n        - contact_id: Contact UUID for personalized tracking (optional)\n        - label: User-friendly label (optional)\n        - tags: List of tags for categorization (optional)\n        - expires_in_days: Days until expiration (optional, default: 365)\n\nReturns:\n    TrackedLinkDetail with the created link info","type":"text/plain"},"url":{"path":["api","v1","tracked-links","manual"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"original_url\": \"string\",\n  \"custom_alias\": \"gdalajf9o\",\n  \"contact_id\": \"string\",\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"expires_in_days\": 8336,\n  \"tracking_domain\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"4afa8763-373c-4600-8e4c-86079908c64f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tracked-links","manual"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"original_url\": \"string\",\n  \"custom_alias\": \"5757\",\n  \"contact_id\": \"string\",\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"expires_in_days\": 1452,\n  \"tracking_domain\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"short_code\": \"string\",\n  \"short_url\": \"string\",\n  \"original_url\": \"string\",\n  \"feature_type\": \"string\",\n  \"feature_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"custom_alias\": \"string\",\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"created_at\": \"1990-11-20T06:55:16.040Z\",\n  \"expires_at\": \"1953-01-02T08:29:30.057Z\",\n  \"is_active\": true,\n  \"click_count\": 8306,\n  \"unique_clicks\": 0,\n  \"first_click_at\": \"2014-02-25T08:49:37.487Z\",\n  \"last_click_at\": \"2021-08-16T22:03:32.662Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"edf79098-3432-40ec-ab23-a0de855941de","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tracked-links","manual"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"original_url\": \"string\",\n  \"custom_alias\": \"5757\",\n  \"contact_id\": \"string\",\n  \"label\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"expires_in_days\": 1452,\n  \"tracking_domain\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"060c9d42-a041-4e0a-9140-5114e54a82ed","name":"Link Tracking Settings","description":{"content":"Configure link tracking behavior including custom domains and tracking pixel settings.","type":"text/plain"},"item":[{"id":"7601a970-4771-48b7-a7e9-548ad604c987","name":"Get Link Tracking Settings","request":{"name":"Get Link Tracking Settings","description":{"content":"Get tenant link tracking settings.\n\nReturns configured settings or defaults if not yet configured.\n\n**Required Scopes:** `settings:read`\n\n**Database:** PRIMARY (tenants table)","type":"text/plain"},"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"efeb9a6a-0546-4465-839f-f3013814d0b1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tracking_domain\": \"c.sendseven.com\",\n  \"link_expiration_days\": 365\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0536dc21-9ed0-42d8-941f-a1d167b73523","name":"Update Link Tracking Settings","request":{"name":"Update Link Tracking Settings","description":{"content":"Update tenant link tracking settings.\n\nOnly updates provided fields. Unspecified fields remain unchanged.\n\n**Required Scopes:** `settings:update`\n\n**Database:** PRIMARY (tenants table)\n\n**Example:**\n```json\n{\n    \"tracking_domain\": \"c.sendseven.com\",\n    \"link_expiration_days\": 365\n}\n```","type":"text/plain"},"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"tracking_domain\": \"string\",\n  \"link_expiration_days\": 3547\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"ab9e2db1-4a10-4393-a85c-d9ecbec669ae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"tracking_domain\": \"string\",\n  \"link_expiration_days\": 3547\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tracking_domain\": \"c.sendseven.com\",\n  \"link_expiration_days\": 365\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"af74a765-e483-49b7-8f9a-a2c99dece4b3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"tracking_domain\": \"string\",\n  \"link_expiration_days\": 3547\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5284fdf5-3afe-4e66-9bfb-1a53f809c6fd","name":"Reset Link Tracking Settings","request":{"name":"Reset Link Tracking Settings","description":{"content":"Reset link tracking settings to defaults (clears all custom settings).\n\n**Required Scopes:** `settings:admin`\n\n**Database:** PRIMARY (tenants table)","type":"text/plain"},"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"44e4eb56-a3a5-43ee-b953-612f83f7b922","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","link-tracking"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"73272896-6f39-4571-a1f4-c1c48fcaf0dd","name":"Get Available Tracking Domains","request":{"name":"Get Available Tracking Domains","description":{"content":"Get list of available tracking domains.\n\nReturns all configured tracking domains that can be selected for link tracking.\n\n**Required Scopes:** Requires authentication (any authenticated user)\n\n**Database:** None (reads from config)\n\n**Response:**\n```json\n{\n    \"domains\": [\n        {\n            \"id\": \"sendseven\",\n            \"domain\": \"c.sendseven.com\",\n            \"format\": \"/{code}\",\n            \"label\": \"SendSeven (c.sendseven.com)\",\n            \"default\": true\n        },\n        ...\n    ],\n    \"default_domain\": \"c.sendseven.com\"\n}\n```","type":"text/plain"},"url":{"path":["api","v1","settings","link-tracking","domains"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b26e3d5e-10a1-4aa5-8776-67698b244046","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","link-tracking","domains"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_domain\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"205864cb-2310-44d8-9eb7-d9227db9d968","name":"Lists","description":{"content":"Create and manage contact lists for targeted campaign sends and audience segmentation.","type":"text/plain"},"item":[{"id":"de12fa50-82a4-41b4-bc3f-a47224dc37ca","name":"Create List","request":{"name":"Create List","description":{"content":"Create a new list (static, dynamic, or newsletter).\n\n- **Static lists**: Contacts are manually added/removed\n- **Dynamic lists**: Contacts are matched via segment conditions\n- **Newsletter lists**: Contacts subscribe via widgets/deep links\n\n**Required Scopes:** `lists:create`","type":"text/plain"},"url":{"path":["api","v1","lists"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"High-value customers for priority messaging\",\n  \"list_type\": \"static\",\n  \"name\": \"VIP Customers\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f4ec4f6d-fc14-49eb-ba79-5cb63d665ec6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"High-value customers for priority messaging\",\n  \"list_type\": \"static\",\n  \"name\": \"VIP Customers\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"list_type\": \"hubspot_segment\",\n  \"description\": \"string\",\n  \"updated_at\": \"string\",\n  \"segment_conditions\": {\n    \"key_0\": true\n  },\n  \"contact_count\": \"string\",\n  \"slug\": \"string\",\n  \"newsletter_config\": \"string\",\n  \"show_in_preference_center\": false,\n  \"is_default\": false,\n  \"last_evaluated_at\": \"1954-03-26T01:32:11.450Z\",\n  \"opt_in_action\": {\n    \"key_0\": 7621.748888324582,\n    \"key_1\": false\n  },\n  \"opt_out_action\": {\n    \"key_0\": 3799,\n    \"key_1\": 8024.564118861172,\n    \"key_2\": true\n  },\n  \"hubspot_optin_field_config\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1d42f30b-35c6-4910-a467-6677b1ddd8ba","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"High-value customers for priority messaging\",\n  \"list_type\": \"static\",\n  \"name\": \"VIP Customers\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dcae8745-efed-46f9-8581-3e48a026051f","name":"List Lists","request":{"name":"List Lists","description":{"content":"List all lists for the tenant with pagination.\n\nReturns paginated list of all static, dynamic, and newsletter lists.\nEach list includes its computed contact count (for email subscriptions).\n\nAny authenticated team member can list contact lists (used for app initialization).\n\n**Response format:**\n```json\n{\n    \"items\": [...],\n    \"pagination\": {\n        \"total\": 25,\n        \"page\": 1,\n        \"page_size\": 20,\n        \"total_pages\": 2,\n        \"has_next\": true,\n        \"has_prev\": false\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","lists"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d401b525-c65b-4bca-8f89-89a7271e664d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8464da7d-8529-4df9-baf8-df35a332a75e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"69af83fb-3fd6-4167-b298-be2262814d06","name":"Get Lists Subscription Stats","request":{"name":"Get Lists Subscription Stats","description":{"content":"Batch opt-in / opt-out / net-change counts for every list in the window.\n\nReturns a row for EVERY list the tenant has (zeros for lists with no\nsubscription activity) so the frontend can map results by ``list_id``.\n\n- ``opt_ins`` — subscriptions whose confirmed-opt-in timestamp\n  (``opt_in_confirmed_at``) falls in the window.\n- ``opt_outs`` — subscriptions with status ``unsubscribed`` whose\n  ``unsubscribed_at`` falls in the window.\n- ``net_change`` — ``opt_ins - opt_outs``.\n\nCounts are a current-state approximation (a re-subscribe NULLs\n``unsubscribed_at``), so churny opt-outs are undercounted.\n\n**Required Scopes:** `lists:read`\n\nNOTE: this static path is declared BEFORE ``GET /{list_id}`` so it is not\ncaptured as a list id.","type":"text/plain"},"url":{"path":["api","v1","lists","subscription-stats"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"window_days","value":"30","description":"Rolling window size in days"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c37c968c-1f57-4546-b844-f45237bd8fb2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists","subscription-stats"],"host":["{{baseUrl}}"],"query":[{"key":"window_days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"window_days\": 325,\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2266c80c-a5b8-4a94-bd37-b39908052857","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists","subscription-stats"],"host":["{{baseUrl}}"],"query":[{"key":"window_days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"88d54fb6-e7b9-4963-ac47-cf30f004bd89","name":"Get List Subscription Activity","request":{"name":"Get List Subscription Activity","description":{"content":"Per-list opt-in / opt-out event drill-down (paginated, newest first).\n\n- ``direction`` filters to opt-in events (``in``), opt-out events (``out``),\n  or both (``all``), all within the window.\n- ``last_message_in_list`` is populated only for ``unsubscribed`` events (the\n  last outbound campaign message this contact received on this channel that\n  belongs to the list), with ``attribution`` of ``exact`` / ``ambiguous`` /\n  ``none``. It is null for ``subscribed`` events.\n\nA single current-state subscription row can surface both a ``subscribed`` and\nan ``unsubscribed`` event when both timestamps fall in the window.\n\n**Required Scopes:** `lists:read` OR `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","subscription-activity"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"window_days","value":"30","description":"Rolling window size in days"},{"disabled":false,"key":"direction","value":"all","description":"all | in | out"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"25","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0f6698c0-548e-4be3-a20a-aff03b935d89","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","subscription-activity"],"host":["{{baseUrl}}"],"query":[{"key":"window_days","value":"30"},{"key":"direction","value":"all"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"pagination\": {\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b7682d67-ff35-4228-a6f4-d33817e6c129","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","subscription-activity"],"host":["{{baseUrl}}"],"query":[{"key":"window_days","value":"30"},{"key":"direction","value":"all"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"34d09bf3-cdc0-4773-a7f4-ad4c54a3d748","name":"Get List","request":{"name":"Get List","description":{"content":"Get a specific list by ID.\n\nReturns full list details including segment conditions and contact count.\n\n**Required Scopes:** `lists:read`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a5ac9bea-2c6b-46fa-8352-0ffcaee9c42d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"list_type\": \"hubspot_segment\",\n  \"description\": \"string\",\n  \"updated_at\": \"string\",\n  \"segment_conditions\": {\n    \"key_0\": true\n  },\n  \"contact_count\": \"string\",\n  \"slug\": \"string\",\n  \"newsletter_config\": \"string\",\n  \"show_in_preference_center\": false,\n  \"is_default\": false,\n  \"last_evaluated_at\": \"1954-03-26T01:32:11.450Z\",\n  \"opt_in_action\": {\n    \"key_0\": 7621.748888324582,\n    \"key_1\": false\n  },\n  \"opt_out_action\": {\n    \"key_0\": 3799,\n    \"key_1\": 8024.564118861172,\n    \"key_2\": true\n  },\n  \"hubspot_optin_field_config\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"783a9dcd-375a-4b90-ae24-2e920157b86c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2e91a802-b235-4df4-9f82-47a03f02b8be","name":"Update List","request":{"name":"Update List","description":{"content":"Update a list.\n\nUpdates name, description, segment conditions, slug, or newsletter config.\nFor dynamic lists, contact count is automatically recalculated.\n\n**Required Scopes:** `lists:update`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"description\": \"Updated description\",\n  \"name\": \"Updated List Name\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e7acb513-949c-453f-9bd1-7ef1602e2782","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"description\": \"Updated description\",\n  \"name\": \"Updated List Name\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"list_type\": \"hubspot_segment\",\n  \"description\": \"string\",\n  \"updated_at\": \"string\",\n  \"segment_conditions\": {\n    \"key_0\": true\n  },\n  \"contact_count\": \"string\",\n  \"slug\": \"string\",\n  \"newsletter_config\": \"string\",\n  \"show_in_preference_center\": false,\n  \"is_default\": false,\n  \"last_evaluated_at\": \"1954-03-26T01:32:11.450Z\",\n  \"opt_in_action\": {\n    \"key_0\": 7621.748888324582,\n    \"key_1\": false\n  },\n  \"opt_out_action\": {\n    \"key_0\": 3799,\n    \"key_1\": 8024.564118861172,\n    \"key_2\": true\n  },\n  \"hubspot_optin_field_config\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6621a1a8-925c-4e23-a4d1-a46e134570e8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"description\": \"Updated description\",\n  \"name\": \"Updated List Name\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"061a4802-803e-45b3-ab32-a5e17b8ed30e","name":"Delete List","request":{"name":"Delete List","description":{"content":"Delete a list.\n\nPermanently removes the list and all associated subscriptions.\n\n**Required Scopes:** `lists:delete`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"4b6b5bcb-25e8-4d24-9db8-66927a47eaee","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"9551987d-e42f-44ae-a76b-da5a4db6eb37","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"175db283-5f34-42da-812a-9357b05db8fe","name":"Get List Contacts","request":{"name":"Get List Contacts","description":{"content":"Get all contacts in a list.\n\nFor static lists, returns subscribed contacts.\nFor dynamic lists, evaluates segment conditions in real-time.\n\n**Required Scopes:** `lists:read` OR `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3fc46375-44f6-49b8-8d37-2d22cfdf6009","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contacts\": [\n    {\n      \"email\": \"john@example.com\",\n      \"name\": \"John Doe\",\n      \"phone\": \"+1234567890\"\n    }\n  ],\n  \"list_id\": \"lst-123\",\n  \"list_name\": \"VIP Customers\",\n  \"list_type\": \"static\",\n  \"total_contacts\": 42\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e3a6c0ee-a776-45d4-beef-6f38726b712e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"139d0b7b-e2f8-4ee6-b366-898016fa7d00","name":"Add Contact To List","request":{"name":"Add Contact To List","description":{"content":"Add a contact to a list (static or newsletter).\n\n- **Static lists**: channel_type should be None (uses email by default)\n- **Newsletter lists**: `channel_type` is **required** (email, telegram,\n  messenger, instagram, etc.); `channel_id` is additionally required for the\n  scoped channels telegram / messenger / instagram.\n\nNote: for backwards compatibility a newsletter request that omits\n`channel_type` is still accepted and falls back to `email`, but this\nbehavior is DEPRECATED and will be removed in a future release — always send\n`channel_type` explicitly.\n\nSame contact can subscribe to same newsletter via multiple channels.\n\n**Required Scopes:** `lists:update`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","members"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"cnt-a1b2c3d4\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"31f60419-1279-4879-af09-e133f9cb7195","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","members"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"cnt-a1b2c3d4\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"member_id\": \"sub-a1b2c3d4\",\n  \"message\": \"Contact added to list\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"306d990b-a914-4fa3-a3b9-4196b5b2287c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","members"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"cnt-a1b2c3d4\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b9f5600b-8037-4701-ad5e-ec5fd25db32b","name":"Remove Contact From List","request":{"name":"Remove Contact From List","description":{"content":"Remove a contact from a list.\n\n- **Static lists**: Removes the contact completely\n- **Newsletter lists**: Removes the subscription for a specific channel;\n  `channel_type` is **required**. (For backwards compatibility a missing\n  `channel_type` still falls back to `email`, but this is DEPRECATED and\n  will be removed in a future release.)\n- **Dynamic lists**: Cannot remove (membership determined by conditions)\n\n**Required Scopes:** `lists:update`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","members",":contact_id"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_type","value":"string","description":"Required for newsletter unsubscriptions (email, telegram, messenger, instagram, ...). DEPRECATED fallback: if omitted for a newsletter list it defaults to email, but this fallback will be removed in a future release — always pass channel_type."}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"8e8268b5-3cfa-4b8d-af2b-cb3034261208","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","members",":contact_id"],"host":["{{baseUrl}}"],"query":[{"key":"channel_type","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"95aa9d82-e6a5-4734-a351-685db958a6bb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","members",":contact_id"],"host":["{{baseUrl}}"],"query":[{"key":"channel_type","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"84911429-62e4-4ca5-9124-643292406e25","name":"Evaluate Conditions Count","request":{"name":"Evaluate Conditions Count","description":{"content":"Count contacts matching inline segment conditions.\n\nAccepts segment conditions directly (no saved list required) and returns\nthe count of matching contacts without loading them into memory.\n\n**Required Scopes:** `lists:read`\n\n**Response:**\n```json\n{\"count\": 42}\n```","type":"text/plain"},"url":{"path":["api","v1","lists","evaluate-count"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"has_telegram\",\n      \"operator\": \"equals\",\n      \"value\": true\n    },\n    {\n      \"field\": \"has_whatsapp\",\n      \"operator\": \"equals\",\n      \"value\": true\n    }\n  ],\n  \"operator\": \"AND\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1e511290-65d2-4537-97a8-99c24cff768f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists","evaluate-count"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"has_telegram\",\n      \"operator\": \"equals\",\n      \"value\": true\n    },\n    {\n      \"field\": \"has_whatsapp\",\n      \"operator\": \"equals\",\n      \"value\": true\n    }\n  ],\n  \"operator\": \"AND\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"020d551f-5e21-42fa-8312-2355a4457004","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists","evaluate-count"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"has_telegram\",\n      \"operator\": \"equals\",\n      \"value\": true\n    },\n    {\n      \"field\": \"has_whatsapp\",\n      \"operator\": \"equals\",\n      \"value\": true\n    }\n  ],\n  \"operator\": \"AND\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f20ba024-39a8-4af8-9012-9457ca156da4","name":"Count Dynamic List","request":{"name":"Count Dynamic List","description":{"content":"Count contacts matching a saved dynamic list's conditions.\n\nEfficiently counts matching contacts using SELECT COUNT(*) instead of\nloading all contacts into memory.\n\n**Required Scopes:** `lists:read`\n\n**Response:**\n```json\n{\"count\": 42}\n```","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","count"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"312b9fee-eb2f-43d4-b675-bd645bbfe0fc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","count"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"74914586-f196-41e7-a562-6425a2593c9b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","count"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c3da7d20-19c3-4fee-8e40-34f46f458895","name":"Evaluate Dynamic List","request":{"name":"Evaluate Dynamic List","description":{"content":"Preview contacts that match segment conditions.\n\nUsed for testing/previewing dynamic list conditions before saving.\nTemporarily applies the provided conditions and returns matching contacts.\n\n**Required Scopes:** `lists:read`","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","evaluate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"has_telegram\",\n      \"operator\": \"equals\",\n      \"value\": true\n    },\n    {\n      \"field\": \"has_whatsapp\",\n      \"operator\": \"equals\",\n      \"value\": true\n    }\n  ],\n  \"operator\": \"AND\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"093215cf-460d-421b-8bcb-01dcf9a6676a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","evaluate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"has_telegram\",\n      \"operator\": \"equals\",\n      \"value\": true\n    },\n    {\n      \"field\": \"has_whatsapp\",\n      \"operator\": \"equals\",\n      \"value\": true\n    }\n  ],\n  \"operator\": \"AND\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contacts\": [\n    {\n      \"email\": \"john@example.com\",\n      \"name\": \"John Doe\",\n      \"phone\": \"+1234567890\"\n    }\n  ],\n  \"list_id\": \"lst-123\",\n  \"list_name\": \"VIP Customers\",\n  \"list_type\": \"static\",\n  \"total_contacts\": 42\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2c1f7f27-3afb-44b8-aa9f-a9bf784692dc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","evaluate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"has_telegram\",\n      \"operator\": \"equals\",\n      \"value\": true\n    },\n    {\n      \"field\": \"has_whatsapp\",\n      \"operator\": \"equals\",\n      \"value\": true\n    }\n  ],\n  \"operator\": \"AND\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"171215ec-0f97-4473-9f85-1ebff6201e11","name":"Get List Signup Options","request":{"name":"Get List Signup Options","description":{"content":"Get signup options (deep links + QR codes) for a newsletter list.\n\nGenerates channel-specific signup links and QR codes for newsletter\nsubscriptions. Useful for widgets and marketing materials.\n\nOnly available for newsletter-type lists.\n\n**Required Scopes:** `lists:read`\n\n**Response:**\n```json\n{\n    \"list_id\": \"...\",\n    \"list_name\": \"Weekly Newsletter\",\n    \"list_slug\": \"weekly-newsletter\",\n    \"signup_options\": {\n        \"telegram\": {\"direct_link\": \"...\", \"qr_code_base64\": \"...\"},\n        \"messenger\": {\"direct_link\": \"...\", \"qr_code_base64\": \"...\"}\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","signup-options"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_qr","value":"true","description":"Whether to generate QR codes"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"cf0b5a0b-8edc-477d-a98d-01afc0f61799","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","signup-options"],"host":["{{baseUrl}}"],"query":[{"key":"include_qr","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"list_id\": \"lst-123\",\n  \"list_name\": \"Weekly Newsletter\",\n  \"list_slug\": \"weekly-newsletter\",\n  \"signup_options\": {\n    \"messenger\": {\n      \"direct_link\": \"https://m.me/page-id?ref=subscribe_lst-123\",\n      \"qr_code_base64\": \"data:image/png;base64,...\"\n    },\n    \"telegram\": {\n      \"direct_link\": \"https://t.me/MyBot?start=subscribe_lst-123\",\n      \"qr_code_base64\": \"data:image/png;base64,...\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9ebec006-25f0-4afa-a0d8-89f53bcba67e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","signup-options"],"host":["{{baseUrl}}"],"query":[{"key":"include_qr","value":"true"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"6774db48-abc3-4953-b6fa-ca76829951be","name":"Live Chat","description":{"content":"Embeddable live chat widget for websites. Manage widget configuration, appearance, and visitor conversations.","type":"text/plain"},"item":[{"id":"2e1ab5aa-4203-40e4-b195-fd6ba2b9a880","name":"List Live Chat Sessions","request":{"name":"List Live Chat Sessions","description":{"content":"List active live chat sessions for the tenant\nOptionally filter by agent_id\n\n**🔐 Required Scopes:** `conversations:read`\n","type":"text/plain"},"url":{"path":["api","v1","live-chat","sessions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"agent_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"545e4c55-a437-4014-af04-0d54dbfd5cf1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","live-chat","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"agent_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"widget_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"contact_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_joined_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ended_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"session_data\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"widget_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"contact_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"status\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"conversation_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_joined_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"ended_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"session_data\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"0431a2fb-4ae8-4c9d-8244-6b264579ae69","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","live-chat","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"agent_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a838e320-2383-4844-8337-7c88c00c83d5","name":"Get Live Chat Session","request":{"name":"Get Live Chat Session","description":{"content":"Get a specific live chat session\n\n**🔐 Required Scopes:** `conversations:read`\n","type":"text/plain"},"url":{"path":["api","v1","live-chat","sessions",":session_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2912664c-f9bb-403b-b177-fb693ae82e4d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"widget_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"status\": \"waiting\",\n  \"started_at\": \"1952-05-26T13:33:57.347Z\",\n  \"agent_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"agent_joined_at\": \"1962-06-21T08:47:50.939Z\",\n  \"ended_at\": \"2010-05-20T10:16:46.293Z\",\n  \"session_data\": {\n    \"key_0\": \"string\",\n    \"key_1\": 4505\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c369b096-9d59-4393-8f68-f2bcdf5e4fe1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ee9f7160-66fe-49ce-88c6-f11e8ab04b08","name":"Assign Agent To Session","request":{"name":"Assign Agent To Session","description":{"content":"Assign an agent to a live chat session\nCreates conversation if it doesn't exist\n\n**🔐 Required Scopes:** `conversations:update`\n","type":"text/plain"},"url":{"path":["api","v1","live-chat","sessions",":session_id","assign"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"agent_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0b35bceb-5d5a-4b5c-80a1-0b12214ff31d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id","assign"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"agent_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"widget_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"status\": \"waiting\",\n  \"started_at\": \"1952-05-26T13:33:57.347Z\",\n  \"agent_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"agent_joined_at\": \"1962-06-21T08:47:50.939Z\",\n  \"ended_at\": \"2010-05-20T10:16:46.293Z\",\n  \"session_data\": {\n    \"key_0\": \"string\",\n    \"key_1\": 4505\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"118250f8-893b-4b05-aa4a-550e7a7f3439","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id","assign"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"agent_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fd374fff-5c87-4d56-addf-7098a38bf47d","name":"Agent Send Message","request":{"name":"Agent Send Message","description":{"content":"Send a message as an agent in a live chat session\n\n**Required Scopes:** `conversations:update`\n\n409 ``{\"error\": \"CONTACT_BLOCKED\", ...}`` when the visitor's contact is blocked.","type":"text/plain"},"url":{"path":["api","v1","live-chat","sessions",":session_id","messages"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9f6f47a2-6cd4-40c8-b443-d159519b637a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id","messages"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"message_id\": \"string\",\n  \"created_at\": \"2008-09-14T21:54:14.577Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"27833eb1-c409-4909-8f39-cdb3ca711bfe","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id","messages"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"60a54909-318c-45d6-ab04-f0d0c8053433","name":"Agent End Session","request":{"name":"Agent End Session","description":{"content":"End a live chat session (agent side)\n\n**🔐 Required Scopes:** `conversations:update`\n","type":"text/plain"},"url":{"path":["api","v1","live-chat","sessions",":session_id","end"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a1024fa7-b236-45bf-9cee-dc85b1a68945","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id","end"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"session_id\": \"string\",\n  \"ended_at\": \"1947-11-30T14:42:48.386Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"54b9e83c-e4c2-45c7-ac2d-3b9a7fb6bc7f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","live-chat","sessions",":session_id","end"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"session_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"7eadeffd-c20a-4ab7-a656-7c5aaf01df62","name":"Messages","description":{"content":"Send and receive messages across all channels (WhatsApp, Telegram, SMS, Email, Instagram, Messenger). Supports text, media, interactive messages, reactions, and contact cards.","type":"text/plain"},"item":[{"id":"29744ef0-8d87-455e-9cbb-0021d1588ad7","name":"Send Message","request":{"name":"Send Message","description":{"content":"Send a new message.\n\nSupports 3 resolution modes:\n\n**Mode 1: conversation_id only** (reply to existing conversation)\n- Just provide `conversation_id` and `text`. The recipient is auto-resolved\n  from the conversation's contact method or last inbound message.\n\n**Mode 2: contact_method_id** (cleanest, resolves everything)\n- Provide `contact_method_id` and `text`. The `to`, `channel_id`, and `contact_id`\n  are all resolved from the contact method record automatically.\n\n**Mode 3: contact_id + optional to + channel_id** (explicit)\n- Provide `contact_id` (and optionally `to` and `channel_id`). The conversation is\n  auto-resolved from the contact. A contact_method is auto-created if needed.\n\nAll modes are backward compatible. Existing requests with `to` + `conversation_id`\ncontinue to work.\n\n**Required Scopes:** `messages:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.","type":"text/plain"},"url":{"path":["api","v1","messages"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"b5d8e2a1-4c3f-4a8b-9d2e-1f6a7b8c9d0e\",\n  \"text\": \"Hello! Your order #12345 has been shipped.\",\n  \"message_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c765baaf-e2b7-486d-802b-55b351927d65","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"b5d8e2a1-4c3f-4a8b-9d2e-1f6a7b8c9d0e\",\n  \"text\": \"Hello! Your order #12345 has been shipped.\",\n  \"message_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"inbound\",\n  \"message_type\": \"file\",\n  \"status\": \"pending\",\n  \"created_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"platform\": \"string\",\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"from\": \"string\",\n  \"to\": \"string\",\n  \"contact_info\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"related_message_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"meta\": {\n    \"key_0\": 8024,\n    \"key_1\": 9965\n  },\n  \"content_format\": \"plain\",\n  \"interactive\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"header_media_url\": \"string\",\n  \"header_media_attachment_id\": \"string\",\n  \"external_id\": \"string\",\n  \"reply_to_external_id\": \"string\",\n  \"quoted_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"read_at\": \"string\",\n  \"is_internal\": true,\n  \"error_message\": \"string\",\n  \"error_code\": \"string\",\n  \"campaign\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"flow_run_id\": \"string\",\n  \"flow_step_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"edited_at\": \"string\",\n  \"previous_text\": \"string\",\n  \"revision_count\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8aad8078-2a0d-4319-be8a-625ec62ba524","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"b5d8e2a1-4c3f-4a8b-9d2e-1f6a7b8c9d0e\",\n  \"text\": \"Hello! Your order #12345 has been shipped.\",\n  \"message_type\": \"text\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"acc1928b-4187-47ae-a164-aa312f1118b1","name":"List Messages","request":{"name":"List Messages","description":{"content":"List messages for a conversation, or tenant-wide by status/direction.\n\n**Conversation mode** (`conversation_id` given): unchanged. Cursor or page pagination.\n\n**Tenant-wide mode** (no `conversation_id`, but `status` and/or `direction` given):\nreturns messages across all conversations of the tenant, newest first\n(`created_at` desc), page/page_size pagination only. Example:\n`GET /messages?status=failed&direction=outbound&page_size=3` lists recent failed\noutbound messages. Limited to the last 30 days unless `created_after` is given.\nEach item is the normal message object (incl. `error_message`, `conversation_id`,\n`contact_id`, `channel_id`, `platform`); `contact_id`/`channel_id` fall back to the\nconversation's values when the message row has none.\n\nSupports two pagination modes in conversation mode:\n\nSupports two pagination modes:\n1. **Page-based (standard)**: Use `page` and `page_size` parameters\n2. **Cursor pagination (recommended for large datasets)**: Use `cursor` parameter for O(1)\n   performance regardless of page number. Returns `next_cursor` in response.\n\nFor tables with billions of rows, always use cursor pagination.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","messages"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"conversation_id","value":"string","description":"Conversation UUID. Required unless a tenant-wide filter (`status` and/or `direction`) is given."},{"disabled":false,"key":"status","value":"sent","description":"Tenant-wide mode only: filter by delivery status (e.g. `failed`)."},{"disabled":false,"key":"direction","value":"inbound","description":"Tenant-wide mode only: filter by direction (`inbound` / `outbound`)."},{"disabled":false,"key":"created_after","value":"2025-01-08T09:00:57.148Z","description":"Tenant-wide mode only: only messages created at/after this ISO-8601 timestamp. Defaults to the last 30 days."},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"},{"disabled":false,"key":"cursor","value":"string","description":"Cursor for efficient keyset pagination (overrides page)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2f575bb6-b11e-4d65-9446-450fd9e820a8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages"],"host":["{{baseUrl}}"],"query":[{"key":"conversation_id","value":"string"},{"key":"status","value":"sent"},{"key":"direction","value":"inbound"},{"key":"created_after","value":"2025-01-08T09:00:57.148Z"},{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"cursor","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_more\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9eb89209-0b67-4a42-87d7-785e6d968b01","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages"],"host":["{{baseUrl}}"],"query":[{"key":"conversation_id","value":"string"},{"key":"status","value":"sent"},{"key":"direction","value":"inbound"},{"key":"created_after","value":"2025-01-08T09:00:57.148Z"},{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"cursor","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"22d7752b-ad86-4967-b405-a8d973b5f62d","name":"Create Internal Note","request":{"name":"Create Internal Note","description":{"content":"Create an internal note on a conversation.\n\nInternal notes are visible only to agents and are **never** sent to\nthe customer. They appear in the conversation timeline styled\ndifferently from regular messages.\n\nSupports @mentions: pass `mentioned_user_ids` to notify other team\nmembers. Each mentioned user receives an in-app notification with a\ndeep link to the conversation.\n\nOptional `assign_to_user_id` also assigns the conversation. That needs\nthe same permission as the assign endpoint: `conversations:update`\n(403 otherwise, and the note is not created), the cross-agent reassign\nrule, and an active workspace member as assignee (400 otherwise).\n\n**Required Scopes:** `messages:create` (+ `conversations:update` when\n`assign_to_user_id` changes the assignee)","type":"text/plain"},"url":{"path":["api","v1","messages","internal-notes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"text\": \"string\",\n  \"mentioned_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"assign_to_user_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"735c1c53-53a3-4d3a-a123-77fc19354f20","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages","internal-notes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"text\": \"string\",\n  \"mentioned_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"assign_to_user_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"inbound\",\n  \"message_type\": \"file\",\n  \"status\": \"pending\",\n  \"created_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"platform\": \"string\",\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"from\": \"string\",\n  \"to\": \"string\",\n  \"contact_info\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"related_message_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"meta\": {\n    \"key_0\": 8024,\n    \"key_1\": 9965\n  },\n  \"content_format\": \"plain\",\n  \"interactive\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"header_media_url\": \"string\",\n  \"header_media_attachment_id\": \"string\",\n  \"external_id\": \"string\",\n  \"reply_to_external_id\": \"string\",\n  \"quoted_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"read_at\": \"string\",\n  \"is_internal\": true,\n  \"error_message\": \"string\",\n  \"error_code\": \"string\",\n  \"campaign\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"flow_run_id\": \"string\",\n  \"flow_step_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"edited_at\": \"string\",\n  \"previous_text\": \"string\",\n  \"revision_count\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"33b2f55a-0b6e-4aba-98eb-582155f7a694","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages","internal-notes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"text\": \"string\",\n  \"mentioned_user_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"assign_to_user_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"52619745-c8f4-4dc4-935d-7f7a8b4d75d5","name":"Get Message","request":{"name":"Get Message","description":{"content":"Get a specific message by ID.\n\nIf this message is a reply to another message, the `quoted_message` field\nwill contain a preview of the original message.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"fafc9c0f-e532-4a83-abb9-adde78c9ff4b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"inbound\",\n  \"message_type\": \"file\",\n  \"status\": \"pending\",\n  \"created_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"platform\": \"string\",\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"from\": \"string\",\n  \"to\": \"string\",\n  \"contact_info\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"related_message_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"meta\": {\n    \"key_0\": 8024,\n    \"key_1\": 9965\n  },\n  \"content_format\": \"plain\",\n  \"interactive\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"header_media_url\": \"string\",\n  \"header_media_attachment_id\": \"string\",\n  \"external_id\": \"string\",\n  \"reply_to_external_id\": \"string\",\n  \"quoted_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"read_at\": \"string\",\n  \"is_internal\": true,\n  \"error_message\": \"string\",\n  \"error_code\": \"string\",\n  \"campaign\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"flow_run_id\": \"string\",\n  \"flow_step_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"edited_at\": \"string\",\n  \"previous_text\": \"string\",\n  \"revision_count\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6854b2c0-1a0d-494e-b239-c2645d633313","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"70925569-421f-4b67-bc16-2f66c7eaac96","name":"Send interactive message","request":{"name":"Send interactive message","description":{"content":"Send an interactive message with buttons or list menu.\n\nInteractive messages provide rich UI elements for user engagement.\nCurrently supported on **WhatsApp only**. Other platforms will return\nan error with guidance on supported alternatives.\n\n## Message Types\n\n### Buttons (`type: \"buttons\"`)\n- Maximum 3 reply buttons\n- Each button has an `id` (returned when clicked) and `title` (max 20 chars)\n- Great for simple choices like \"Yes/No\", \"Accept/Decline\"\n\n### List Menu (`type: \"list\"`)\n- Up to 10 sections with rows\n- Each row has `id`, `title` (max 24 chars), and optional `description`\n- Maximum 10 total rows across all sections\n- Great for menus, product listings, options\n\n### Request Contact Info (`type: \"request_contact_info\"`)\n- A single button asking the user to share their own WhatsApp phone number\n- Only `body` is used — the button label is fixed by WhatsApp and shown in\n  the recipient's app language, so `buttons`/`sections` are rejected\n- The tap does **not** produce a button-reply webhook: the number arrives\n  as a contacts message and is linked (or merged) onto the contact\n  automatically\n- Primarily for contacts who adopted a WhatsApp **username** — WhatsApp\n  withholds their phone number from every webhook until they share it, so\n  until then they are reachable on WhatsApp only, not SMS/RCS/email\n\n## Example Request (Buttons)\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"type\": \"buttons\",\n    \"body\": \"Would you like to proceed with your order?\",\n    \"buttons\": [\n        {\"id\": \"confirm\", \"title\": \"Yes, confirm\"},\n        {\"id\": \"cancel\", \"title\": \"No, cancel\"},\n        {\"id\": \"help\", \"title\": \"Need help\"}\n    ]\n}\n```\n\n## Example Request (List)\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"type\": \"list\",\n    \"body\": \"Please select a product category:\",\n    \"button_text\": \"View Categories\",\n    \"sections\": [\n        {\n            \"title\": \"Electronics\",\n            \"rows\": [\n                {\"id\": \"phones\", \"title\": \"Phones\", \"description\": \"Smartphones and accessories\"},\n                {\"id\": \"laptops\", \"title\": \"Laptops\", \"description\": \"Notebooks and tablets\"}\n            ]\n        }\n    ]\n}\n```\n\n**Required Scopes:** `messages:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.","type":"text/plain"},"url":{"path":["api","v1","messages","send","interactive"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"type\": \"buttons\",\n  \"body\": \"Would you like to schedule a callback?\",\n  \"header\": {\n    \"type\": \"text\",\n    \"text\": \"Support Request\"\n  },\n  \"footer\": \"Available Mon-Fri 9am-5pm\",\n  \"buttons\": [\n    {\n      \"id\": \"btn_yes\",\n      \"title\": \"Yes, schedule\"\n    },\n    {\n      \"id\": \"btn_no\",\n      \"title\": \"No thanks\"\n    },\n    {\n      \"id\": \"btn_chat\",\n      \"title\": \"Chat instead\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"595c8f8b-9595-4b12-a83d-3e56b98a94e6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages","send","interactive"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"type\": \"buttons\",\n  \"body\": \"Would you like to schedule a callback?\",\n  \"header\": {\n    \"type\": \"text\",\n    \"text\": \"Support Request\"\n  },\n  \"footer\": \"Available Mon-Fri 9am-5pm\",\n  \"buttons\": [\n    {\n      \"id\": \"btn_yes\",\n      \"title\": \"Yes, schedule\"\n    },\n    {\n      \"id\": \"btn_no\",\n      \"title\": \"No thanks\"\n    },\n    {\n      \"id\": \"btn_chat\",\n      \"title\": \"Chat instead\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"status\": \"string\",\n  \"platform\": \"string\",\n  \"type\": \"string\",\n  \"external_id\": \"string\",\n  \"error\": \"string\",\n  \"error_code\": 5058\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e239af48-32b8-4392-939c-7ca3d187bb76","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages","send","interactive"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"type\": \"buttons\",\n  \"body\": \"Would you like to schedule a callback?\",\n  \"header\": {\n    \"type\": \"text\",\n    \"text\": \"Support Request\"\n  },\n  \"footer\": \"Available Mon-Fri 9am-5pm\",\n  \"buttons\": [\n    {\n      \"id\": \"btn_yes\",\n      \"title\": \"Yes, schedule\"\n    },\n    {\n      \"id\": \"btn_no\",\n      \"title\": \"No thanks\"\n    },\n    {\n      \"id\": \"btn_chat\",\n      \"title\": \"Chat instead\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2f0c70e9-4241-4989-9412-6a2546c733ab","name":"Add reaction to message","request":{"name":"Add reaction to message","description":{"content":"Add a reaction (emoji) to a message.\n\nSends a reaction to the specified message on the messaging platform.\nSupported on every channel whose capability matrix advertises reactions\n(WhatsApp, Telegram, Messenger, Instagram, Live Chat); see the channel\ncapabilities endpoint for the per-channel `reactions` block.\n\n## Important Notes\n- The message's channel must support reactions (see channel capabilities)\n- The message must have an external_id (platform message ID)\n- Common emojis work best (thumbs up, heart, laugh, etc.)\n- Telegram only accepts emojis from its fixed reaction set\n- You can only have one reaction per message per sender\n\n## Example Request\n```json\n{\n    \"emoji\": \"thumbs up\"\n}\n```\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","messages",":message_id","react"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"emoji\": \"thumbsup\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"03b350dd-af14-4576-8cc9-badfbb91ef05","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages",":message_id","react"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"emoji\": \"thumbsup\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"emoji\": \"thumbsup\",\n  \"external_id\": \"wamid.HBgNNDkxNTIxNTU4MDg2NRUCABIYFjNFQjBCNUYxMjdFRkI5\",\n  \"message_id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d29fbe5f-c38c-442f-8d72-203e20c454cd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages",":message_id","react"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"emoji\": \"thumbsup\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a115835e-3323-46cc-bf1d-930f89a941e5","name":"Remove reaction from message","request":{"name":"Remove reaction from message","description":{"content":"Remove a reaction from a message.\n\nRemoves your reaction from the specified message on any channel that\nsupports reactions (WhatsApp, Telegram, Messenger, Instagram, Live Chat).\nThis is done by sending an empty emoji reaction.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","messages",":message_id","react"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"fc58e1ff-870a-4da5-875c-b9e7eac02031","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages",":message_id","react"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"emoji\": \"thumbsup\",\n  \"external_id\": \"wamid.HBgNNDkxNTIxNTU4MDg2NRUCABIYFjNFQjBCNUYxMjdFRkI5\",\n  \"message_id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"326b0f5d-ae3a-4791-94a3-266526eaab70","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages",":message_id","react"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"629f5fe5-4e5d-4f64-a4ea-3e8b18795205","name":"Mark a received message as read on the channel","request":{"name":"Mark a received message as read on the channel","description":{"content":"Send a read receipt for an inbound message.\n\nShows the contact that their message was read (for example the blue ticks\non WhatsApp or \"Seen\" on Messenger and Instagram). No request body is\nneeded.\n\n## Important Notes\n- Only **inbound** messages (sent by the contact) can be marked as read\n  (`422 message_not_inbound` otherwise).\n- Not every channel supports read receipts — check\n  `GET /channels/sender-actions`. Unsupported channels return\n  `422 sender_action_not_supported` (for example Telegram, SMS, email).\n- This is **not a message**: nothing is billed, no message is created and\n  no webhook is sent.\n- Your inbox's own unread state is **not** changed by this call.\n\n## Errors\n`detail` is an object: `{\"code\", \"message\", \"channel_type\", \"action\"}`.\n- `404 message_not_found`\n- `422 sender_action_not_supported`, `message_not_inbound`, `channel_unavailable`\n- `429 sender_action_rate_limited` — about 30 calls per minute per\n  conversation; retry after the `Retry-After` seconds\n- `502 sender_action_failed` — the messaging platform rejected the request\n\nRepeats are absorbed: a second read receipt for the same message, or a\ntyping `on` while the indicator is still showing, returns 200 with\n`deduplicated: true` and nothing is sent again (typing `off` is never\ndeduplicated).\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","messages",":message_id","read"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"90440a3f-50fa-4172-966a-056fca87f0ab","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages",":message_id","read"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"action\": \"typing\",\n  \"channel_type\": \"whatsapp\",\n  \"conversation_id\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n  \"deduplicated\": false,\n  \"expires_in_seconds\": 25,\n  \"implied_read\": true,\n  \"message_id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"state\": \"on\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"be04cf64-91e0-4aee-941c-a68f58271ed1","name":"Message or conversation not found.","originalRequest":{"url":{"path":["api","v1","messages",":message_id","read"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7b0ede33-2995-4ead-85eb-881fa309a15d","name":"Not possible on this channel or message: `sender_action_not_supported`, `message_not_inbound`, `no_inbound_message`, `channel_unavailable` (or a request validation error).","originalRequest":{"url":{"path":["api","v1","messages",":message_id","read"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3ec30007-1527-4d52-b091-cd8d2533acdf","name":"Too many read/typing requests for this conversation (`sender_action_rate_limited`, about 30 per minute). Honour `Retry-After`.","originalRequest":{"url":{"path":["api","v1","messages",":message_id","read"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Too Many Requests","code":429,"header":[{"disabled":false,"description":"Seconds to wait before retrying.","key":"Retry-After","value":"4595"},{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"aa3224ec-7555-472d-a8c9-59f4832c78e3","name":"The messaging platform rejected the action (`sender_action_failed`).","originalRequest":{"url":{"path":["api","v1","messages",":message_id","read"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": {\n    \"action\": \"read\",\n    \"channel_type\": \"telegram\",\n    \"code\": \"sender_action_not_supported\",\n    \"message\": \"Read receipts are not supported on this channel.\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"38b98a11-21f6-4a00-b811-7ea1ae9d068e","name":"Send contact card(s)","request":{"name":"Send contact card(s)","description":{"content":"Send one or more contact cards via WhatsApp.\n\nContact cards allow sharing contact information including names, phone numbers,\nemail addresses, physical addresses, and organization details.\nCurrently supported on **WhatsApp only**.\n\n## Contact Card Structure\n\nEach contact must have at minimum a `name.formatted_name`. Optionally include:\n- **phones**: List of phone numbers with type (CELL, WORK, HOME, etc.)\n- **emails**: List of email addresses with type\n- **addresses**: Physical addresses\n- **org**: Organization/company information\n- **urls**: Website URLs\n- **birthday**: Date of birth (YYYY-MM-DD)\n\n## Example Request\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"contacts\": [\n        {\n            \"name\": {\n                \"formatted_name\": \"John Doe\",\n                \"first_name\": \"John\",\n                \"last_name\": \"Doe\"\n            },\n            \"phones\": [\n                {\"phone\": \"+1234567890\", \"type\": \"CELL\"}\n            ],\n            \"emails\": [\n                {\"email\": \"john@example.com\", \"type\": \"WORK\"}\n            ],\n            \"org\": {\n                \"company\": \"Acme Inc\",\n                \"title\": \"Software Engineer\"\n            }\n        }\n    ]\n}\n```\n\n**Required Scopes:** `messages:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.","type":"text/plain"},"url":{"path":["api","v1","messages","send","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"contacts\": [\n    {\n      \"emails\": [\n        {\n          \"email\": \"jane@example.com\",\n          \"type\": \"WORK\"\n        }\n      ],\n      \"name\": {\n        \"first_name\": \"Jane\",\n        \"formatted_name\": \"Jane Smith\",\n        \"last_name\": \"Smith\"\n      },\n      \"org\": {\n        \"company\": \"Acme Inc\",\n        \"title\": \"Sales Manager\"\n      },\n      \"phones\": [\n        {\n          \"phone\": \"+14155551234\",\n          \"type\": \"WORK\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"263d92c2-c648-4a85-bded-fc42c8bafd5d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages","send","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"contacts\": [\n    {\n      \"emails\": [\n        {\n          \"email\": \"jane@example.com\",\n          \"type\": \"WORK\"\n        }\n      ],\n      \"name\": {\n        \"first_name\": \"Jane\",\n        \"formatted_name\": \"Jane Smith\",\n        \"last_name\": \"Smith\"\n      },\n      \"org\": {\n        \"company\": \"Acme Inc\",\n        \"title\": \"Sales Manager\"\n      },\n      \"phones\": [\n        {\n          \"phone\": \"+14155551234\",\n          \"type\": \"WORK\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"status\": \"string\",\n  \"contacts_count\": 587,\n  \"external_id\": \"string\",\n  \"platform\": \"whatsapp\",\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c7fb1b8c-835b-4ec2-945c-dd6788e61642","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages","send","contacts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"contacts\": [\n    {\n      \"emails\": [\n        {\n          \"email\": \"jane@example.com\",\n          \"type\": \"WORK\"\n        }\n      ],\n      \"name\": {\n        \"first_name\": \"Jane\",\n        \"formatted_name\": \"Jane Smith\",\n        \"last_name\": \"Smith\"\n      },\n      \"org\": {\n        \"company\": \"Acme Inc\",\n        \"title\": \"Sales Manager\"\n      },\n      \"phones\": [\n        {\n          \"phone\": \"+14155551234\",\n          \"type\": \"WORK\"\n        }\n      ]\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"23fe6c06-d076-4e53-8ad2-a541706b22bb","name":"Send sticker","request":{"name":"Send sticker","description":{"content":"Send a sticker via WhatsApp.\n\nStickers are static or animated images in .webp format that can be sent\nto WhatsApp contacts. Currently supported on **WhatsApp only**.\n\n## Sticker Requirements\n- **Format**: .webp only\n- **Static stickers**: 512x512 pixels, max 100KB\n- **Animated stickers**: 512x512 pixels, max 500KB\n\n## Sending Methods\nYou can send a sticker using one of two methods:\n1. **sticker_id**: Media ID of a previously uploaded sticker (preferred)\n2. **sticker_url**: Direct URL to a .webp sticker file\n\n## Example Request (by ID)\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"sticker_id\": \"1234567890123456\"\n}\n```\n\n## Example Request (by URL)\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"sticker_url\": \"https://example.com/stickers/happy.webp\"\n}\n```\n\n**Required Scopes:** `messages:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.","type":"text/plain"},"url":{"path":["api","v1","messages","send","sticker"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"sticker_url\": \"https://example.com/stickers/greeting.webp\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e062409f-8e61-4c4a-a7fa-3450d30863e8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages","send","sticker"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"sticker_url\": \"https://example.com/stickers/greeting.webp\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"status\": \"string\",\n  \"external_id\": \"string\",\n  \"platform\": \"whatsapp\",\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"16fd2621-9dbc-442c-9595-83387c3a41a4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages","send","sticker"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"a1b2c3d4-5678-9abc-def0-1234567890ab\",\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"sticker_url\": \"https://example.com/stickers/greeting.webp\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"543aa8b2-f16a-49af-8949-eb1bf8f81487","name":"Send carousel message","request":{"name":"Send carousel message","description":{"content":"Send a carousel (multi-card) message via WhatsApp or Messenger.\n\nThis endpoint supports both platforms with different approaches:\n\n## WhatsApp Carousels (Template-based)\n\nWhatsApp carousels require a pre-approved template in Meta Business Manager.\nEach card can have:\n- **Header**: Image or video\n- **Body**: Dynamic text parameters\n- **Buttons**: Up to 2 buttons per card (max 10 cards)\n\n### Example Request (WhatsApp)\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"template_name\": \"product_catalog\",\n    \"language\": \"en\",\n    \"cards\": [\n        {\n            \"header\": {\"type\": \"image\", \"media_id\": \"123456789\"},\n            \"body_parameters\": [\n                {\"type\": \"text\", \"text\": \"Product A\"},\n                {\"type\": \"text\", \"text\": \"$99.99\"}\n            ],\n            \"buttons\": [\n                {\"type\": \"url\", \"index\": 0, \"parameters\": [{\"type\": \"text\", \"text\": \"product-a\"}]}\n            ]\n        }\n    ]\n}\n```\n\n## Messenger Carousels (Generic Template)\n\nMessenger carousels use the Generic Template format and don't require pre-approval.\nEach element can have:\n- **Title**: Card title (required)\n- **Subtitle**: Card description\n- **Image**: Card image URL\n- **Default Action**: Action when card is tapped\n- **Buttons**: Up to 3 buttons per element (max 10 elements)\n\n### Example Request (Messenger)\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"contact_id\": \"uuid\",\n    \"elements\": [\n        {\n            \"title\": \"Product A\",\n            \"subtitle\": \"Great product for $99.99\",\n            \"image_url\": \"https://example.com/product-a.jpg\",\n            \"default_action\": {\n                \"type\": \"web_url\",\n                \"url\": \"https://example.com/products/a\"\n            },\n            \"buttons\": [\n                {\"type\": \"web_url\", \"url\": \"https://example.com/buy/a\", \"title\": \"Buy Now\"},\n                {\"type\": \"postback\", \"title\": \"More Info\", \"payload\": \"INFO_A\"}\n            ]\n        }\n    ]\n}\n```\n\n## Supported Platforms\n- **WhatsApp**: Use `template_name` + `cards`\n- **Messenger**: Use `elements`\n\n**Required Scopes:** `messages:create`\n\n\n**409 `conversation_owned_elsewhere`:** for team members restricted by\nCustom Inboxes, when the contact is in an ongoing (non-email)\nconversation handled in an inbox they cannot see. Email starts a new\nthread instead.","type":"text/plain"},"url":{"path":["api","v1","messages","send","carousel"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"template_name\": \"string\",\n  \"language\": \"en\",\n  \"meta\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"84928dbb-9759-436a-b3dd-2c4ffd091007","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages","send","carousel"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"template_name\": \"string\",\n  \"language\": \"en\",\n  \"meta\": {}\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"status\": \"string\",\n  \"platform\": \"string\",\n  \"cards_count\": 3460,\n  \"external_id\": \"string\",\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5247f8bb-07e8-425a-89f8-f93fef19c949","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages","send","carousel"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"template_name\": \"string\",\n  \"language\": \"en\",\n  \"meta\": {}\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"c204cc66-b0a8-4be9-a823-6726494756a1","name":"Notes","description":{"content":"Add internal notes to conversations visible only to team members, not sent to the customer.","type":"text/plain"},"item":[{"id":"3c710091-b8fc-4b46-ae1b-11d3445b4756","name":"Create Note","request":{"name":"Create Note","description":{"content":"Create a note on a conversation.\n\n**Required Scopes:** `notes:create`\n\nNotes provide internal context for agents handling conversations.\nThey are not visible to customers.\n\nThe note is also shown in the conversation timeline as an internal note\n(the response's `message_id` is that timeline item). Internal notes are\nnever sent to the customer and never billed.","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","notes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"Customer prefers email communication. Follow up next week.\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"5024a9ca-6c11-481a-860f-4f6179d78960","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","notes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"Customer prefers email communication. Follow up next week.\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"content\": \"string\",\n  \"updated_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"user_id\": \"string\",\n  \"user_name\": \"string\",\n  \"user_email\": \"string\",\n  \"message_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"53a6a436-6f30-48dc-b12e-f1e79cb4c6f8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","notes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"Customer prefers email communication. Follow up next week.\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"531ad345-7071-4cd4-83a4-fa59f6645348","name":"List Conversation Notes","request":{"name":"List Conversation Notes","description":{"content":"Get all notes for a conversation.\n\n**Required Scopes:** `notes:read`\n\n404 when the conversation does not exist in the workspace or is not\nvisible to the caller (custom inboxes).","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","notes"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"dc2d5e3d-cc20-4f3e-82b9-76f55cf57866","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","notes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"58d6709a-d8f6-4184-8df3-a6d915ea8e9a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","notes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"408c5b15-8c65-482c-b057-35cbefa6eadb","name":"Get Unified Notes Feed","request":{"name":"Get Unified Notes Feed","description":{"content":"Unified notes feed: notes, internal notes from the timeline and closing\nnotes in one list, newest first.\n\n**Required Scopes:** `notes:read` (timeline-only internal notes,\n`source=internal_message`, are only included when the caller also holds\n`messages:read`)\n\n`page * page_size` must not exceed 1000 (422). For the contact scopes the\nnewest 500 conversations of the contact are searched.\n\nA note that is shown both in the notes panel and in the timeline appears\nonce. Items with `editable=false` (timeline-only internal notes, closing\nnotes) cannot be edited via `PUT /notes/{id}`.","type":"text/plain"},"url":{"path":["api","v1","notes","feed"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"conversation_id","value":"string","description":"Conversation to show notes for (contact is derived from it)"},{"disabled":false,"key":"contact_id","value":"string","description":"Contact to show notes for (required if conversation_id is not given)"},{"disabled":false,"key":"scope","value":"conversation","description":"`conversation` = notes of this conversation; `contact_conversations` = notes of all conversations of the contact; `contact` = contact-level notes; `all` = both"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0b918937-aa09-4ec5-94d1-00115ceae79c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","notes","feed"],"host":["{{baseUrl}}"],"query":[{"key":"conversation_id","value":"string"},{"key":"contact_id","value":"string"},{"key":"scope","value":"conversation"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"debdc5d7-e6e2-4f4a-bfdf-0ae771790d48","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","notes","feed"],"host":["{{baseUrl}}"],"query":[{"key":"conversation_id","value":"string"},{"key":"contact_id","value":"string"},{"key":"scope","value":"conversation"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"403b0047-bf55-47ae-8c0b-b40b46bacd86","name":"Update Note","request":{"name":"Update Note","description":{"content":"Update a note.\n\n**Required Scopes:** `notes:update`\n\nOnly the note's author or a workspace owner/admin may edit it (403\notherwise). 404 when the note's conversation is not visible to the caller.","type":"text/plain"},"url":{"path":["api","v1","notes",":note_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"note_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"Updated: Customer now prefers phone calls.\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"11518c26-678d-40cd-ae3b-2e4c09cead41","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","notes",":note_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"note_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"Updated: Customer now prefers phone calls.\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"content\": \"string\",\n  \"updated_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"user_id\": \"string\",\n  \"user_name\": \"string\",\n  \"user_email\": \"string\",\n  \"message_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0b92926f-2416-424b-a756-db9ca8666463","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","notes",":note_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"note_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"content\": \"Updated: Customer now prefers phone calls.\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7d580af1-0fe5-4906-9473-7bf20f91efd0","name":"Delete Note","request":{"name":"Delete Note","description":{"content":"Delete a note.\n\n**Required Scopes:** `notes:delete`\n\nOnly the note's author or a workspace owner/admin may delete it (403\notherwise). 404 when the note's conversation is not visible to the caller.","type":"text/plain"},"url":{"path":["api","v1","notes",":note_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"note_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"2a31e8db-cf05-46c8-ba7c-2277a2580b0e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","notes",":note_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"note_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"61cc6477-af04-4f99-8c75-fff6f385dae5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","notes",":note_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"note_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"52ba770e-acdb-42ed-9bc2-8074d8dea71a","name":"Create Contact Note","request":{"name":"Create Contact Note","description":{"content":"Create a note on a contact.\n\n**Required Scopes:** `notes:create`\n\nContact notes persist across conversations and provide\nlong-term context about a customer.","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","notes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"Customer prefers email communication. Follow up next week.\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"16894c63-37f4-48ec-a348-97f9575f2f37","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","notes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"Customer prefers email communication. Follow up next week.\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"content\": \"string\",\n  \"updated_at\": \"string\",\n  \"user_id\": \"string\",\n  \"user_name\": \"string\",\n  \"user_email\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9a946729-d44c-4dea-9588-fca41f506adb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","notes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"content\": \"Customer prefers email communication. Follow up next week.\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7aae0bc9-d625-46d4-9535-d24ea61c8758","name":"List Contact Notes","request":{"name":"List Contact Notes","description":{"content":"Get all notes for a contact.\n\n**Required Scopes:** `notes:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","notes"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b6100b0e-1e57-4091-b6ba-6abd966a1fba","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","notes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ed8b40ec-1542-4798-b538-a5c6e741b430","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","notes"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"dbf0df55-c4d5-4323-b156-9f7393376674","name":"OAuth2 Apps","description":{"content":"Register and manage OAuth2 client applications for third-party integrations with SendSeven.","type":"text/plain"},"item":[{"id":"8b1ddf8e-1b41-4fad-90e6-15ae487ddc0b","name":"List Apps","request":{"name":"List Apps","description":{"content":"List registered OAuth apps for the current tenant.\n\n**Required Scopes:** `api:admin`","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","apps"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"active_only","value":"true","description":"Filter to active apps only"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"25ae8c3d-6a04-401f-a8e6-2a062ad229cd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps"],"host":["{{baseUrl}}"],"query":[{"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"client_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"redirect_uris\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowed_scopes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logo_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"homepage_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_public\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_first_party\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"client_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"redirect_uris\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowed_scopes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"description\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logo_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"homepage_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_public\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_first_party\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"7ca0ce17-9031-4057-8c8d-817299007b90","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps"],"host":["{{baseUrl}}"],"query":[{"key":"active_only","value":"true"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2b8f952c-f4fb-446f-877b-f612f906d7e2","name":"Create App","request":{"name":"Create App","description":{"content":"Register a new OAuth app for the current tenant.\n\nReturns the client_secret **once** - it cannot be retrieved again.\nStore it securely!\n\nNote: Public unverified apps are limited to OIDC and read-only scopes.\nTo use write/create/delete scopes publicly, submit for verification.\n\n**Required Scopes:** `api:admin`","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","apps"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"redirect_uris\": [\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\"\n  ],\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f76d4755-12cb-40b6-9e6c-6e2645ade880","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"redirect_uris\": [\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\"\n  ],\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"client_id\": \"string\",\n  \"redirect_uris\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_verified\": false,\n  \"is_active\": false,\n  \"created_at\": \"1982-07-11T03:17:01.185Z\",\n  \"updated_at\": \"1976-02-29T18:16:42.592Z\",\n  \"client_secret\": \"string\",\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false,\n  \"is_first_party\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"aaa463f5-a85c-499f-a415-89a71650a9c3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"redirect_uris\": [\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\"\n  ],\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6168f7bc-11ab-42c9-bc8e-99ec571c6e84","name":"Get App","request":{"name":"Get App","description":{"content":"Get OAuth app details.\n\n**Required Scopes:** `api:admin`","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b4efdc9b-40f2-4775-8770-c631d2943599","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"client_id\": \"string\",\n  \"redirect_uris\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_verified\": true,\n  \"is_active\": false,\n  \"created_at\": \"1984-12-19T04:27:32.157Z\",\n  \"updated_at\": \"2008-05-19T17:24:13.688Z\",\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false,\n  \"is_first_party\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"99c9adf3-87a3-4308-b119-8268840a5dc8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a9d1b7cd-33a7-422c-b671-18338562859d","name":"Update App","request":{"name":"Update App","description":{"content":"Update an OAuth app's settings.\n\nNote: Public unverified apps are limited to OIDC and read-only scopes.\nTo use write/create/delete scopes publicly, submit for verification.\n\n**Required Scopes:** `api:admin`","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"redirect_uris\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_scopes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_active\": true,\n  \"is_public\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7c8a6b65-2b5f-48c9-92b5-41958c7e4a83","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"redirect_uris\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_scopes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_active\": false,\n  \"is_public\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"client_id\": \"string\",\n  \"redirect_uris\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_verified\": true,\n  \"is_active\": false,\n  \"created_at\": \"1984-12-19T04:27:32.157Z\",\n  \"updated_at\": \"2008-05-19T17:24:13.688Z\",\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false,\n  \"is_first_party\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d9472677-036f-4ef0-8100-15e86099a3f1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"redirect_uris\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_scopes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_active\": false,\n  \"is_public\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"677b9ace-5edd-4ca2-b21f-d195ba942d0f","name":"Delete App","request":{"name":"Delete App","description":{"content":"Delete an OAuth app.\n\nThis revokes all authorizations and removes the app.\n\n**Required Scopes:** `api:admin`","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"991bcc16-f37e-428b-ba28-7328e2d44fb1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4b0de816-7070-45fc-b48b-210c475d8554","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"16bba6e9-d707-4d74-ba0b-23bd53b44f0c","name":"Regenerate App Secret","request":{"name":"Regenerate App Secret","description":{"content":"Regenerate the client secret for an OAuth app.\n\nThis immediately invalidates the old secret. The new secret is returned\n**once** and cannot be retrieved again.\n\nExisting access tokens remain valid until they expire, but the old secret\ncan no longer be used for token exchanges or refreshes.\n\n**Required Scopes:** `api:admin`","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","apps",":app_id","regenerate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"f76358d3-8f05-4b37-b82d-26c8a68312df","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id","regenerate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"client_id\": \"string\",\n  \"redirect_uris\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_verified\": false,\n  \"is_active\": false,\n  \"created_at\": \"1982-07-11T03:17:01.185Z\",\n  \"updated_at\": \"1976-02-29T18:16:42.592Z\",\n  \"client_secret\": \"string\",\n  \"description\": \"string\",\n  \"logo_url\": \"string\",\n  \"homepage_url\": \"string\",\n  \"is_public\": false,\n  \"is_first_party\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"941f0c8e-1643-4f7a-99a1-02970f4d0037","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","apps",":app_id","regenerate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"app_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"39bce8e6-8dbe-4d2f-b1e4-59c54c398545","name":"List Authorizations","request":{"name":"List Authorizations","description":{"content":"List user's connected OAuth apps.\n\nShows apps the user has authorized to access their account.\n\nBy default (`scope=tenant`) only authorizations belonging to the\ncurrently-active tenant are returned, preventing cross-tenant leakage on\nthe Connected Apps settings page. Pass `scope=all` to list the user's\nconnected apps across every tenant they belong to.\n\n**Requires authentication.**","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","authorizations"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"scope","value":"tenant","description":"Which authorizations to return. 'tenant' (default) limits the list to the currently-active tenant; 'all' returns the user's connected apps across every tenant."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a25398c8-25cf-4505-96e3-1f57cb826f9c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","authorizations"],"host":["{{baseUrl}}"],"query":[{"key":"scope","value":"tenant"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"oauth_app\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"granted_scopes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"oauth_app\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"granted_scopes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"f99c6c1c-b2ba-4ec2-b136-e2e8ea7a6c65","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","authorizations"],"host":["{{baseUrl}}"],"query":[{"key":"scope","value":"tenant"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"14a84ffa-8513-4f80-ab68-70dae1163b8d","name":"Revoke Authorization","request":{"name":"Revoke Authorization","description":{"content":"Revoke access for a connected app.\n\nImmediately invalidates all tokens for this app-user combination.\n\n**Requires authentication.**","type":"text/plain"},"url":{"path":["api","v1","oauth-apps","authorizations",":authorization_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"authorization_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"8511ef73-fedf-4395-bd63-9491e4b8f73c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","oauth-apps","authorizations",":authorization_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"authorization_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ba57989e-be1d-4810-922b-e6df31922c76","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","oauth-apps","authorizations",":authorization_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"authorization_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"eab283b5-025d-4def-8924-a665ec316977","name":"Roles & Permissions","description":{"content":"Manage RBAC roles, permissions, and scope assignments for team members and API tokens.","type":"text/plain"},"item":[{"id":"82a653f6-5841-4abe-aea3-77fc426be2d4","name":"List Roles","request":{"name":"List Roles","description":{"content":"List all roles available in this tenant.\n\n**Required Scopes:** `team:read`\n\nReturns:\n- System roles (OWNER, ADMIN, etc.) - read-only, shared across all tenants\n- Custom roles (tenant-specific) - can be created, updated, deleted","type":"text/plain"},"url":{"path":["api","v1","roles"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_system","value":"true","description":"Include system roles (OWNER, ADMIN, etc.)"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0f0f2c02-dffe-4a8e-ba01-6d542f3dbda2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles"],"host":["{{baseUrl}}"],"query":[{"key":"include_system","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"46f27c5b-8261-44e1-a3bf-c801170dec25","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles"],"host":["{{baseUrl}}"],"query":[{"key":"include_system","value":"true"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d6ceead4-1cf5-4d65-8602-51e03e05ffdd","name":"Create Custom Role","request":{"name":"Create Custom Role","description":{"content":"Create a custom role with specified scopes.\n\n**Required Scopes:** `team:admin`\n\nSystem roles cannot be created via API. You may only bake scopes you\nyourself hold into a custom role (privilege-escalation ceiling), and a role\ncarrying `account:billing_read` may only be created by the billing-account\nowner.","type":"text/plain"},"url":{"path":["api","v1","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7783bd67-2d09-4098-b5f0-7e0f6e6fe1bc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"is_system\": true,\n  \"updated_at\": \"string\",\n  \"tenant_id\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d0edee4a-a084-4999-a554-c3f996baae8f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d4338bc6-9564-408f-8276-ae7be5187c69","name":"Get Available Scopes","request":{"name":"Get Available Scopes","description":{"content":"Get all available scopes in the system (for UI dropdown).\n\n**Required Scopes:** `team:read`\n\nReturns scopes grouped by resource (campaigns, contacts, etc.)","type":"text/plain"},"url":{"path":["api","v1","roles","scopes","available"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8ef7ff07-6871-4e28-9fa8-c40815e6a06b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles","scopes","available"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"scopes\": {\n    \"campaigns\": [\n      {\n        \"action\": \"read\",\n        \"description\": \"View campaigns\",\n        \"scope\": \"campaigns:read\"\n      },\n      {\n        \"action\": \"create\",\n        \"description\": \"Create campaigns\",\n        \"scope\": \"campaigns:create\"\n      }\n    ],\n    \"contacts\": [\n      {\n        \"action\": \"read\",\n        \"description\": \"View contacts\",\n        \"scope\": \"contacts:read\"\n      }\n    ]\n  },\n  \"total\": 78\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9d23476d-fa5c-4833-8095-160691bfe114","name":"Get Role","request":{"name":"Get Role","description":{"content":"Get role details with all scopes.\n\n**Required Scopes:** `team:read`","type":"text/plain"},"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6e741f40-a906-4c7c-a888-b82feabfe09f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"is_system\": true,\n  \"updated_at\": \"string\",\n  \"tenant_id\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c809d5b0-25c4-4b82-8a56-fbcef4c2d5b9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6ea38ee5-9257-4ee6-882e-1cb5ed4e6ee5","name":"Update Role","request":{"name":"Update Role","description":{"content":"Update custom role metadata (name, description).\n\n**Required Scopes:** `team:admin`\n\nSystem roles cannot be updated.\nUse /roles/{id}/scopes endpoints to modify permissions.","type":"text/plain"},"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"description\": \"Updated description for marketing manager role\",\n  \"name\": \"Senior Marketing Manager\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"71c8ea76-5b83-4724-8730-8b53f32d6f86","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"description\": \"Updated description for marketing manager role\",\n  \"name\": \"Senior Marketing Manager\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"is_system\": true,\n  \"updated_at\": \"string\",\n  \"tenant_id\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0fbd5403-4e94-42c0-939e-19e79160238a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"description\": \"Updated description for marketing manager role\",\n  \"name\": \"Senior Marketing Manager\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8ee80562-ee10-4bcf-8cec-2982b2914eb8","name":"Delete Role","request":{"name":"Delete Role","description":{"content":"Delete custom role.\n\n**Required Scopes:** `team:admin`\n\nSystem roles cannot be deleted.\nUsers with this role will lose these permissions.","type":"text/plain"},"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"eb8fdda0-60d9-4110-9b1d-c2dc96f7ba11","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"cf324419-fbb2-4ec5-b5b0-442a0f270c55","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"07e0d814-dcbe-4aab-9f6c-4bc2b232bb39","name":"Add Scopes To Role","request":{"name":"Add Scopes To Role","description":{"content":"Add scopes to a custom role.\n\n**Required Scopes:** `team:admin`\n\nImportant: You can only grant scopes that you have permission for.\nSystem roles cannot be modified.","type":"text/plain"},"url":{"path":["api","v1","roles",":role_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scopes\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"90e81b92-fa5f-4107-8055-0a79346f1157","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles",":role_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scopes\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"is_system\": true,\n  \"updated_at\": \"string\",\n  \"tenant_id\": \"string\",\n  \"description\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"icon\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"69df0502-3760-4891-a332-6b8470af1b03","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles",":role_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"scopes\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"28d86b2d-ddab-40ec-81a3-65584fbc7418","name":"Remove Scope From Role","request":{"name":"Remove Scope From Role","description":{"content":"Remove scope from a custom role.\n\n**Required Scopes:** `team:admin`\n\nSystem roles cannot be modified. Detaching `account:billing_read` requires\nthe billing-account owner.","type":"text/plain"},"url":{"path":["api","v1","roles",":role_id","scopes",":scope"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"scope","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"2c2a7094-ab5d-435a-9a15-75cb65dbafe5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","roles",":role_id","scopes",":scope"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"scope","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Scope 'campaigns:write' removed from role\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3e9311f6-7d7a-46c9-946d-d7fccc511353","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","roles",":role_id","scopes",":scope"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"scope","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3ffa4f12-aadf-46ae-8460-ec92f52605bb","name":"Get User Permissions","request":{"name":"Get User Permissions","description":{"content":"Get complete permission overview for a user\n\nReturns:\n- All assigned roles\n- Direct scope grants\n- Effective scopes (merged from roles + direct grants)\n\n**🔐 Required Scopes:** `team:read`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b9a1f760-0430-42e7-9f4b-5b7e818e5301","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"user_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"roles\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"direct_scopes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"effective_scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"total_scopes\": 7187\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7bdf2c0c-b92e-47e4-9180-cb4af6510f48","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9bda5683-84bd-4b56-a6b3-3020f5863b00","name":"Get User Roles","request":{"name":"Get User Roles","description":{"content":"Get all roles assigned to a user in this tenant\n\n**🔐 Required Scopes:** `team:read`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c0e0e285-3f41-456b-b048-887c9ccb098c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"role_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"role_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"assigned_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"assigned_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"expires_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"role_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"role_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"assigned_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"assigned_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"expires_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"e20d3321-9ee0-4f2d-a311-d1108ee50bf8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1d10b189-b49c-452f-90d1-b42486c7ff38","name":"Assign Role To User","request":{"name":"Assign Role To User","description":{"content":"Assign a role to a user (multi-role supported)\n\nUser can have multiple roles - scopes are merged\n\nSecurity: Users can only assign roles with scopes they themselves possess.\nThis prevents privilege escalation attacks.\n\n**🔐 Required Scopes:** `team:update`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"role_id\": \"uuid-of-role\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b2e875d9-d4bb-4ecc-98e4-07a3bba45ad6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"role_id\": \"uuid-of-role\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"assignment_id\": \"uuid-of-assignment\",\n  \"message\": \"Role 'Admin' assigned to user\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"41851f62-7229-4604-b4b3-9b68191ccbc6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","roles"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"role_id\": \"uuid-of-role\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"56bd48be-f2ce-4d6c-a871-22f469fc154b","name":"Remove Role From User","request":{"name":"Remove Role From User","description":{"content":"Remove a role from a user\n\nSecurity: Users cannot remove their own system or owner roles.\nAlso prevents removing the last owner from a tenant.\n\n**🔐 Required Scopes:** `team:update`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"a9508cb0-5859-4cb9-a24f-6b515ca3b32c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"ebcdb43c-51d1-4655-9ce6-9380e71cc988","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","roles",":role_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"role_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"318c5707-1784-443d-9b1e-91016ab47c89","name":"Get User Effective Scopes","request":{"name":"Get User Effective Scopes","description":{"content":"Get all effective scopes for a user (merged from roles + direct grants)\n\n**🔐 Required Scopes:** `team:read`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3c6208f0-a2fc-472b-812a-47eb674cfa91","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"user_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"total\": 639\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4c29c524-373e-4fcf-a312-2c7af7b9eb81","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"16c0afb1-1791-4cba-9902-79b941f31f2e","name":"Grant Direct Scope","request":{"name":"Grant Direct Scope","description":{"content":"Grant scope directly to user (bypasses roles)\n\nUse for temporary permissions or edge cases.\nRequires OWNER/ADMIN permission.\n\n**🔐 Required Scopes:** `team:admin`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"expires_at\": \"2025-12-31T23:59:59Z\",\n  \"scope\": \"campaigns:update\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b4f80dd5-4f30-41d7-b935-26883a1c09e8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"expires_at\": \"2025-12-31T23:59:59Z\",\n  \"scope\": \"campaigns:update\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"grant_id\": \"uuid-of-grant\",\n  \"message\": \"Scope 'campaigns:update' granted to user\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0ba55d73-0f42-472e-919a-5ff98f78560b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"expires_at\": \"2025-12-31T23:59:59Z\",\n  \"scope\": \"campaigns:update\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2f49910e-e9a6-4d14-bad9-9ae18e99e1ed","name":"Revoke Direct Scope","request":{"name":"Revoke Direct Scope","description":{"content":"Revoke a direct scope grant from a user\n\n**🔐 Required Scopes:** `team:admin`\n","type":"text/plain"},"url":{"path":["api","v1","permissions","users",":user_id","scopes",":scope_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"scope_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e7c295f0-900a-4644-8020-bb3e0e70593b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","scopes",":scope_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"scope_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"60c7a274-b544-401e-abbb-669dba6f046e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","users",":user_id","scopes",":scope_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"scope_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1c8b4b5e-a36c-42dd-b884-a9a0694fe1d4","name":"Get My Scopes","request":{"name":"Get My Scopes","description":{"content":"Get current user's effective scopes (for frontend permission checking)\n\nThis endpoint is useful for:\n- Frontend to show/hide UI elements based on permissions\n- Debugging permission issues\n- Client-side validation before API calls","type":"text/plain"},"url":{"path":["api","v1","permissions","me","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1d9cd937-d998-4aab-b123-93d8fd7c9e21","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","me","scopes"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tenant_id\": \"string\",\n  \"scopes\": [\n    \"string\",\n    \"string\"\n  ],\n  \"total\": 3866\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a8e8e3a4-2ce9-42e5-ab22-1317c925c4b4","name":"Check My Permissions","request":{"name":"Check My Permissions","description":{"content":"Check if current user has required scopes\n\nUseful for frontend to check multiple permissions at once\n\nExample:\nPOST /api/v1/permissions/me/check\n{\n    \"required_scopes\": [\"campaigns:update\", \"email:read\", \"lists:*\"]\n}\n\nReturns:\n{\n    \"has_all\": true,\n    \"results\": {\n        \"campaigns:update\": true,\n        \"email:read\": true,\n        \"lists:*\": true\n    }\n}","type":"text/plain"},"url":{"path":["api","v1","permissions","me","check"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"[\n  \"string\",\n  \"string\"\n]","options":{"raw":{"language":"json"}}}},"response":[{"id":"5e7c4753-f528-42e1-bed1-f769c31afdd1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","permissions","me","check"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"[\n  \"string\",\n  \"string\"\n]","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"has_all\": true,\n  \"results\": {\n    \"campaigns:update\": true,\n    \"email:read\": true,\n    \"lists:*\": true\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6de1313f-ca99-489f-a0af-9a8a1dce7ea7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","permissions","me","check"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"[\n  \"string\",\n  \"string\"\n]","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"54b800ef-45e4-4255-aae1-96df5304fcd0","name":"Saved Interactive Messages","description":{"content":"Save and reuse interactive message templates (button menus, list menus) across conversations.","type":"text/plain"},"item":[{"id":"d6befd50-3503-4848-8dfc-8e01480ec6cc","name":"List Saved Interactive Messages","request":{"name":"List Saved Interactive Messages","description":{"content":"List saved interactive messages visible to the current user.\n\nReturns the user's own messages and all shared messages. Users with\n`canned_responses:settings` scope see all messages in the tenant.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"type","value":"string","description":"Filter by type: 'buttons' or 'list'"},{"disabled":false,"key":"category","value":"string","description":"Filter by category"},{"disabled":false,"key":"search","value":"string","description":"Search in title, body, and shortcut"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"cb9d8f3b-4ecc-4622-b6c7-5911cc8a5790","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"type","value":"string"},{"key":"category","value":"string"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"14fe933b-6f2c-4b61-8656-b794afdf588c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"type","value":"string"},{"key":"category","value":"string"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5fcfea9c-2053-4ffe-8f2a-8712f507909f","name":"Create Saved Interactive Message","request":{"name":"Create Saved Interactive Message","description":{"content":"Create a new saved interactive message template.\n\nBy default, messages are shared (visible to all team members). Set `is_shared=false`\nto make it personal. Only users with `canned_responses:settings` scope can create shared messages.\n\n## Buttons Type\n- Maximum 3 reply buttons\n- Each button has an `id` (returned when clicked) and `title` (max 20 chars)\n\n## List Type\n- Up to 10 sections with rows\n- Each row has `id`, `title` (max 24 chars), and optional `description`\n- Maximum 10 total rows across all sections\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"interactive_type\": \"list\",\n  \"body\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"document\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"is_shared\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9d6b2a96-9fc0-4f9a-a2a8-6b48348633c2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"interactive_type\": \"list\",\n  \"body\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"document\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"is_shared\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"interactive_type\": \"string\",\n  \"body\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"string\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f0efb2c3-0f45-45e9-ab82-57d949d4feda","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"title\": \"string\",\n  \"interactive_type\": \"list\",\n  \"body\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"document\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"is_shared\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"54f17401-604f-4cca-9553-fdaf45dde2de","name":"List Categories","request":{"name":"List Categories","description":{"content":"Get unique categories for saved interactive messages.\n\nReturns all categories from messages visible to the current user.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages","categories"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9a0e1e3f-97a3-4c69-a0d0-98aca94a4e9e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages","categories"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"categories\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7747aaad-2f41-4b9e-8e98-54abff483a77","name":"Get By Shortcut","request":{"name":"Get By Shortcut","description":{"content":"Get a saved interactive message by its shortcut.\n\nUsed for slash command lookups (e.g., /pricing). The shortcut is\ncase-insensitive and the leading slash is optional.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages","by-shortcut",":shortcut"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"shortcut","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"df5692e8-b328-4f51-8b09-770627f3f65d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages","by-shortcut",":shortcut"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"shortcut","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"interactive_type\": \"string\",\n  \"body\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"string\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"804450f6-a5fd-45bd-8c82-8136b5f6bd6b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages","by-shortcut",":shortcut"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"shortcut","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"826599fa-dd25-41f3-be21-f1def63acfd5","name":"Get Saved Interactive Message","request":{"name":"Get Saved Interactive Message","description":{"content":"Get a specific saved interactive message by ID.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b5f8baaa-8706-46ca-a12f-0ae6e9370c37","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"interactive_type\": \"string\",\n  \"body\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"string\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"85d8acb3-26b5-4b32-af0d-c7981bc743ed","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"75d05275-31fc-4283-98b7-4d12f25a4245","name":"Update Saved Interactive Message","request":{"name":"Update Saved Interactive Message","description":{"content":"Update a saved interactive message.\n\nUsers can only update their own messages. Users with `canned_responses:settings`\nscope can update any message.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"title\": \"stri\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"interactive_type\": \"buttons\",\n  \"body\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"image\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"is_shared\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"af8e535f-683c-492f-86d1-315b6a1fe454","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"title\": \"stri\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"interactive_type\": \"buttons\",\n  \"body\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"image\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"is_shared\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"title\": \"string\",\n  \"interactive_type\": \"string\",\n  \"body\": \"string\",\n  \"is_shared\": true,\n  \"updated_at\": \"string\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"string\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"created_by_user_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"219c1fb8-11bd-4e1a-b3b6-d07e9ea895d7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"title\": \"stri\",\n  \"shortcut\": \"string\",\n  \"category\": \"string\",\n  \"interactive_type\": \"buttons\",\n  \"body\": \"string\",\n  \"header_text\": \"string\",\n  \"header_type\": \"image\",\n  \"header_media_url\": \"string\",\n  \"header_attachment_id\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"button_text\": \"string\",\n  \"is_shared\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1659ca74-f597-4ee4-b730-fac7ab137239","name":"Delete Saved Interactive Message","request":{"name":"Delete Saved Interactive Message","description":{"content":"Delete a saved interactive message.\n\nUsers can only delete their own messages. Users with `canned_responses:settings`\nscope can delete any message.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"0b010e14-2cd7-485f-8a2b-1ac3f4bb6105","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3225f801-27f7-4a06-8d53-548805b1c678","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2fbd1668-02ea-402b-ab3f-2432fe686b32","name":"Send Saved Interactive Message","request":{"name":"Send Saved Interactive Message","description":{"content":"Send a saved interactive message to a contact.\n\nThis endpoint retrieves the saved interactive message template and sends it\nto the specified contact via the specified WhatsApp channel.\n\nThe saved message must be visible to the current user (either owned by them\nor shared).\n\n## Example Request\n```json\n{\n    \"channel_id\": \"uuid-of-whatsapp-channel\",\n    \"contact_id\": \"uuid-of-recipient-contact\",\n    \"meta\": {\n        \"campaign\": \"q4-sales\"\n    }\n}\n```\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","saved-interactive-messages",":message_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"meta\": {\n    \"key_0\": 6193,\n    \"key_1\": 4274.185832719422\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"044e74ac-de4e-49f8-8902-562eb41cabf8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"meta\": {\n    \"key_0\": 6193,\n    \"key_1\": 4274.185832719422\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"status\": \"string\",\n  \"type\": \"string\",\n  \"saved_message_id\": \"string\",\n  \"external_id\": \"string\",\n  \"platform\": \"whatsapp\",\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ff49db4c-dcd8-42a2-84e3-29885210d547","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","saved-interactive-messages",":message_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"meta\": {\n    \"key_0\": 6193,\n    \"key_1\": 4274.185832719422\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"8882b2b3-91cd-41e1-bde0-73b64b752cd2","name":"Scheduler","description":{"content":"Schedule one-off and recurring messages. Birthday reminders, anniversaries, cron-style recurring sends with audience filters across all channels.","type":"text/plain"},"item":[{"id":"f6813724-d3ab-4939-89a2-3b797df04338","name":"Create Scheduled Send","request":{"name":"Create Scheduled Send","description":{"content":"Create a scheduled send.\n\nThe send fires once at ``send_at`` (UTC) and transitions to ``completed``,\nunless ``recurrence_rule`` is set — in which case the row stays in\n``scheduled`` and ``next_run_at`` advances per the rule.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","sends"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"channel_type\": \"sms\",\n  \"payload\": {\n    \"key_0\": true,\n    \"key_1\": 3378\n  },\n  \"send_at\": \"2024-03-06T23:53:23.044Z\",\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"timezone\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e2639778-7e14-415c-85a9-8485ea0edf99","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","sends"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"channel_type\": \"sms\",\n  \"payload\": {\n    \"key_0\": true,\n    \"key_1\": 3378\n  },\n  \"send_at\": \"2024-03-06T23:53:23.044Z\",\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"timezone\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"channel_type\": \"email\",\n  \"payload\": {\n    \"key_0\": 1045.66121555829,\n    \"key_1\": \"string\"\n  },\n  \"send_at\": \"string\",\n  \"next_run_at\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"status\": \"running\",\n  \"flow_run_id\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"rule_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7ded136f-4d8e-4dd9-9910-9634742768d7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","sends"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"channel_type\": \"sms\",\n  \"payload\": {\n    \"key_0\": true,\n    \"key_1\": 3378\n  },\n  \"send_at\": \"2024-03-06T23:53:23.044Z\",\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"timezone\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dd2bbc4a-5109-4944-8dad-a62e3ee812f7","name":"List Scheduled Sends","request":{"name":"List Scheduled Sends","description":{"content":"List scheduled sends for the current tenant.\n\n**Required Scopes:** `scheduler:read`","type":"text/plain"},"url":{"path":["api","v1","scheduler","sends"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"failed","description":"Filter by status (scheduled, running, completed, failed, canceled)"},{"disabled":false,"key":"channel_type","value":"telegram","description":"Filter by channel type"},{"disabled":false,"key":"contact_id","value":"string","description":"Filter to scheduled sends for a specific contact"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c042bb7c-e31c-4238-9230-d37e875c2b0c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","sends"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"failed"},{"key":"channel_type","value":"telegram"},{"key":"contact_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1404f8b8-2e81-4a85-a697-9cf9aa8332dd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","sends"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"failed"},{"key":"channel_type","value":"telegram"},{"key":"contact_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e4b06895-f140-4fb9-8c93-3acbc4a34100","name":"Get Scheduled Send","request":{"name":"Get Scheduled Send","description":{"content":"Fetch a single scheduled send.\n\n**Required Scopes:** `scheduler:read`","type":"text/plain"},"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c3e50b7b-f970-4af2-bb14-1522f5c86dec","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"channel_type\": \"email\",\n  \"payload\": {\n    \"key_0\": 1045.66121555829,\n    \"key_1\": \"string\"\n  },\n  \"send_at\": \"string\",\n  \"next_run_at\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"status\": \"running\",\n  \"flow_run_id\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"rule_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"372b747a-8a73-4376-abc9-cfb96d865e19","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fc64b077-f8bf-4ea6-ad11-45fe4d28be2d","name":"Update Scheduled Send","request":{"name":"Update Scheduled Send","description":{"content":"Update a scheduled send.\n\nEditable fields: ``payload``, ``send_at``, ``recurrence_rule``. Pass an\nempty string for ``recurrence_rule`` to clear it. Only allowed while the\nsend is in status ``scheduled`` — returns 409 for any other state.\n\nUpdating ``send_at`` also resets ``next_run_at`` to the same value so the\nworker picks up the new schedule on the next tick.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"email_mailbox_id\": \"string\",\n  \"send_at\": \"1957-07-21T00:26:36.507Z\",\n  \"recurrence_rule\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"5163e5a7-a9e5-482b-a124-98ac95fcfd57","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"email_mailbox_id\": \"string\",\n  \"send_at\": \"1957-07-21T00:26:36.507Z\",\n  \"recurrence_rule\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"channel_type\": \"email\",\n  \"payload\": {\n    \"key_0\": 1045.66121555829,\n    \"key_1\": \"string\"\n  },\n  \"send_at\": \"string\",\n  \"next_run_at\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"status\": \"running\",\n  \"flow_run_id\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"rule_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0f0ea97e-9af1-41d6-9fa3-16ab5e236c1d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"email_mailbox_id\": \"string\",\n  \"send_at\": \"1957-07-21T00:26:36.507Z\",\n  \"recurrence_rule\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0212a25e-fc66-40f1-9f20-9530847550d8","name":"Cancel Scheduled Send","request":{"name":"Cancel Scheduled Send","description":{"content":"Cancel a scheduled send (soft-cancel — sets status to ``canceled``).\n\nIdempotent: cancelling an already-cancelled / completed / failed send\nreturns the same shape rather than 404. The row is preserved for audit.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"029e69a7-456e-40e3-86fb-cf1d241f208c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d3a013bc-25ad-4a27-8dc2-58e3c8291c57","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","sends",":send_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"send_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"19cedbc5-90f9-417a-90ae-380feb19e0b9","name":"Create Scheduled Rule","request":{"name":"Create Scheduled Rule","description":{"content":"Create a scheduled rule.\n\nThree rule kinds are supported:\n\n  - ``birthday``: materializes one send per contact whose birthday falls\n    in the upcoming window. Requires ``time_of_day_local``; ``timezone``\n    defaults to per-contact-local when NULL. Must NOT set\n    ``recurrence_rule``.\n  - ``recurring_cron``: evaluates ``recurrence_rule`` (RRULE) against the\n    rule's ``segment_filter`` audience. ``recurrence_rule`` is required.\n  - ``segment_blast``: one-shot send to a segment at\n    ``next_evaluation_at``. ``recurrence_rule`` must be NULL.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"kind\": \"recurring_cron\",\n  \"channel_type\": \"email\",\n  \"payload\": {\n    \"key_0\": 4951,\n    \"key_1\": true,\n    \"key_2\": 8412\n  },\n  \"description\": \"string\",\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 850\n  },\n  \"next_evaluation_at\": \"1967-09-20T13:23:19.082Z\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f849655f-0568-49c8-84c3-843874a14408","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"kind\": \"recurring_cron\",\n  \"channel_type\": \"email\",\n  \"payload\": {\n    \"key_0\": 4951,\n    \"key_1\": true,\n    \"key_2\": 8412\n  },\n  \"description\": \"string\",\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 850\n  },\n  \"next_evaluation_at\": \"1967-09-20T13:23:19.082Z\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"kind\": \"birthday\",\n  \"channel_type\": \"telegram\",\n  \"channel_id\": \"string\",\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 118.08233550241076\n  },\n  \"next_evaluation_at\": \"string\",\n  \"last_evaluated_at\": \"string\",\n  \"status\": \"paused\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"25703400-2b5d-4941-9408-f6ad28dedff4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"kind\": \"recurring_cron\",\n  \"channel_type\": \"email\",\n  \"payload\": {\n    \"key_0\": 4951,\n    \"key_1\": true,\n    \"key_2\": 8412\n  },\n  \"description\": \"string\",\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 850\n  },\n  \"next_evaluation_at\": \"1967-09-20T13:23:19.082Z\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6cb5152a-70b6-468f-84d9-3ecf0c9e083c","name":"List Scheduled Rules","request":{"name":"List Scheduled Rules","description":{"content":"List scheduled rules for the current tenant.\n\n**Required Scopes:** `scheduler:read`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"active","description":"Filter by status (active, paused, archived)"},{"disabled":false,"key":"kind","value":"segment_blast","description":"Filter by rule kind (birthday, recurring_cron, segment_blast)"},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"adf7c54b-8c30-4fe0-841f-07a938d25e46","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"active"},{"key":"kind","value":"segment_blast"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"668b8252-12cd-4ba2-8576-fa05275de26f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"active"},{"key":"kind","value":"segment_blast"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f3dca7e9-f995-4577-925d-b4d3a7c8b2bb","name":"Get Scheduled Rule","request":{"name":"Get Scheduled Rule","description":{"content":"Fetch a single scheduled rule.\n\n**Required Scopes:** `scheduler:read`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c3c0a11e-ad07-405c-b477-9175ae7de2b7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"kind\": \"birthday\",\n  \"channel_type\": \"telegram\",\n  \"channel_id\": \"string\",\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 118.08233550241076\n  },\n  \"next_evaluation_at\": \"string\",\n  \"last_evaluated_at\": \"string\",\n  \"status\": \"paused\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ff4a44f4-306c-4221-94b2-1c640e76f0fe","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cc0b9d2c-a193-47ad-bf09-ec7f10c22d04","name":"Update Scheduled Rule","request":{"name":"Update Scheduled Rule","description":{"content":"Update a scheduled rule.\n\nMutates only fields present in the body. ``status`` may only be set to\n``active`` or ``paused`` — use ``DELETE`` to archive. Pass an empty string\nfor ``recurrence_rule`` to clear it (turn a recurring rule into a one-shot\nvia ``next_evaluation_at``).\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"payload\": {\n    \"key_0\": 6008.895689014073\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": \"string\",\n    \"key_1\": 8387.787309053134\n  },\n  \"next_evaluation_at\": \"1978-05-06T04:31:43.815Z\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"aa7245ed-66f2-47b2-a5c9-be494724d14b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"payload\": {\n    \"key_0\": 6008.895689014073\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": \"string\",\n    \"key_1\": 8387.787309053134\n  },\n  \"next_evaluation_at\": \"1978-05-06T04:31:43.815Z\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"kind\": \"birthday\",\n  \"channel_type\": \"telegram\",\n  \"channel_id\": \"string\",\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 118.08233550241076\n  },\n  \"next_evaluation_at\": \"string\",\n  \"last_evaluated_at\": \"string\",\n  \"status\": \"paused\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f90f92d7-87ee-4166-abac-c605f9fda56f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"channel_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_id\": \"string\",\n  \"email_mailbox_id\": \"string\",\n  \"payload\": {\n    \"key_0\": 6008.895689014073\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": \"string\",\n    \"key_1\": 8387.787309053134\n  },\n  \"next_evaluation_at\": \"1978-05-06T04:31:43.815Z\",\n  \"status\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f5e1c1a3-e1e3-457d-9211-18dbbd39b759","name":"Delete Scheduled Rule","request":{"name":"Delete Scheduled Rule","description":{"content":"Soft-delete a scheduled rule (sets status to ``archived`` and clears\n``next_evaluation_at``). The row is preserved for audit + so already-\nmaterialized ScheduledSend rows keep a valid ``rule_id`` reference.\n\nIdempotent.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"06c4e53e-2a99-4cf0-af19-296147490d58","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"06393668-bd0f-4099-918d-4b4bc2d72a5b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cd440723-0254-49a7-a519-1a1f082baaf7","name":"Pause Scheduled Rule","request":{"name":"Pause Scheduled Rule","description":{"content":"Pause a scheduled rule. The evaluator skips paused rules entirely.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules",":rule_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"ebb78257-5dcc-457b-9e3a-99e44dde9ddb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"kind\": \"birthday\",\n  \"channel_type\": \"telegram\",\n  \"channel_id\": \"string\",\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 118.08233550241076\n  },\n  \"next_evaluation_at\": \"string\",\n  \"last_evaluated_at\": \"string\",\n  \"status\": \"paused\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"171a610f-31b2-43e0-8532-15def08bca9a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id","pause"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e921ec79-e4c0-4fa4-8e75-137c29a34f0a","name":"Resume Scheduled Rule","request":{"name":"Resume Scheduled Rule","description":{"content":"Resume a paused rule. ``next_evaluation_at`` is set to now so the\nevaluator picks it up on the next tick.\n\n**Required Scopes:** `scheduler:write`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules",":rule_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"2f57c4d0-b633-4d94-b720-20b63944f7c3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"kind\": \"birthday\",\n  \"channel_type\": \"telegram\",\n  \"channel_id\": \"string\",\n  \"payload\": {\n    \"key_0\": \"string\"\n  },\n  \"time_of_day_local\": \"string\",\n  \"timezone\": \"string\",\n  \"recurrence_rule\": \"string\",\n  \"segment_filter\": {\n    \"key_0\": 118.08233550241076\n  },\n  \"next_evaluation_at\": \"string\",\n  \"last_evaluated_at\": \"string\",\n  \"status\": \"paused\",\n  \"created_by_user_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"email_mailbox_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0edef9f4-d7f1-4f1d-8677-76257c7f954d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id","resume"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"eaf5750a-75a7-4c9f-979e-4121fa6837e6","name":"List Sends For Rule","request":{"name":"List Sends For Rule","description":{"content":"List the ScheduledSends produced by this rule.\n\nUsed by the Rules tab drill-in: \"show me what this rule has actually\nmaterialized.\" Ordered by next_run_at descending (most recent first).\n\n**Required Scopes:** `scheduler:read`","type":"text/plain"},"url":{"path":["api","v1","scheduler","rules",":rule_id","sends"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0e556438-9f31-4aae-b81d-fae1f36be40b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id","sends"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c2c03c91-c4c0-4070-84fe-74f5170a2438","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","scheduler","rules",":rule_id","sends"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"rule_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3a889eb3-a3b1-43dd-92dc-619f65006c1a","name":"List Scheduled Sends For Contact","request":{"name":"List Scheduled Sends For Contact","description":{"content":"List scheduled sends for a specific contact.\n\nUsed by the contact-detail \"Reminders\" tab. When ``status`` is omitted the\nresponse defaults to active sends (``scheduled`` + ``running``) — the rows\na user expects to see. Pass an explicit status to inspect history.\n\n**Required Scopes:** `scheduler:read` AND `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","scheduled-sends"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"failed","description":"Filter by status. Defaults to active sends (scheduled, running) when omitted."},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"eb740bc2-3800-41c4-b043-d1cb056b4017","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","scheduled-sends"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"failed"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"08d0ed3d-f484-4f67-8c79-b3cad5d2346d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","scheduled-sends"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"failed"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"f21618a7-a4c3-402b-9baa-bdbfffd77148","name":"SMS","description":{"content":"Manage SMS provisioning, sender verification, and account balance.","type":"text/plain"},"item":[{"id":"b0851357-102f-4086-a950-670753fd91e2","name":"List MSISDNs available to purchase in a country","request":{"name":"List MSISDNs available to purchase in a country","description":{"content":"List numbers offered by seven.io for the given country.\n\nResults are cached per-tenant for 5 minutes to keep the pick-a-number\npicker snappy and to avoid hammering seven.io when a customer pages\nthrough options.\n\n**Required Scopes:** ``channels:read``","type":"text/plain"},"url":{"path":["api","v1","sms","available-numbers"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"country","value":"st","description":"(Required) ISO-3166 alpha-2"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"dd5777b2-04c8-488c-9b56-b3831f5ea3f8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","available-numbers"],"host":["{{baseUrl}}"],"query":[{"key":"country","value":"st"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"country\": \"string\",\n  \"cached_until\": \"1956-09-16T11:53:57.904Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b853f3a1-3a10-4fe4-bc55-8136df05e5b4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","available-numbers"],"host":["{{baseUrl}}"],"query":[{"key":"country","value":"st"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dc8da114-9e25-4e2e-b6b3-98503c44ebc8","name":"Current prepaid SMS balance","request":{"name":"Current prepaid SMS balance","description":{"content":"Return the tenant's current seven.io subaccount balance.\n\n**Required Scopes:** ``channels:read``","type":"text/plain"},"url":{"path":["api","v1","sms","balance"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"force_refresh","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"081f2d0a-3702-4d42-9f0c-811bb9cb7142","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","balance"],"host":["{{baseUrl}}"],"query":[{"key":"force_refresh","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"balance_eur\": \"+000819.5555\",\n  \"low_balance_warn_eur\": \"+21860280898\",\n  \"auto_topup_enabled\": false,\n  \"auto_topup_threshold_cents\": 2452,\n  \"auto_topup_amount_cents\": 4865,\n  \"last_checked_at\": \"1977-11-25T01:41:31.500Z\",\n  \"low_balance_warn_is_default\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"92229509-ad6a-44dd-a843-75a62d9dfab9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","balance"],"host":["{{baseUrl}}"],"query":[{"key":"force_refresh","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"eff818df-461b-4e21-bb2f-1ac03ad20311","name":"Set the low-balance warning threshold","request":{"name":"Set the low-balance warning threshold","description":{"content":"Set (or clear) the workspace's SMS low-balance **warning** threshold.\n\nWhen the prepaid balance drops below this amount the workspace owners and\nadmins receive the low-balance warning (email + in-app, at most once per\n24h). This is warn-only — it never triggers a charge (see auto-topup).\n\nBody: ``{\"threshold_eur\": <0 – 1000, max 2 decimals> | null}`` —\n``null`` removes the per-workspace override so the platform default\napplies again. Returns the updated settings resource (same shape as\n``GET /sms/balance``); the balance value is the cached one (no forced\nprovider refresh).\n\n**Required Scopes:** ``channels:update``","type":"text/plain"},"url":{"path":["api","v1","sms","low-balance-threshold"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"threshold_eur\": 865.1138260628898\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6c6b8e07-0192-493f-b764-85dd1d353baf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","low-balance-threshold"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"threshold_eur\": 865.1138260628898\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"balance_eur\": \"+000819.5555\",\n  \"low_balance_warn_eur\": \"+21860280898\",\n  \"auto_topup_enabled\": false,\n  \"auto_topup_threshold_cents\": 2452,\n  \"auto_topup_amount_cents\": 4865,\n  \"last_checked_at\": \"1977-11-25T01:41:31.500Z\",\n  \"low_balance_warn_is_default\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f06c1236-7c4e-48b0-967c-8fb82227c4c6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","low-balance-threshold"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"threshold_eur\": 865.1138260628898\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"069c5225-04d9-4d7d-b7a1-ad1954f9fe11","name":"Start DTMF voice verification for an own MSISDN","request":{"name":"Start DTMF voice verification for an own MSISDN","description":{"content":"Kick off seven.io's DTMF voice verification.\n\nseven.io places an outbound call that reads a PIN aloud; the customer\nrepeats it back to our UI which POSTs it to\n:func:`confirm_sender` below.\n\n**Required Scopes:** ``channels:update``","type":"text/plain"},"url":{"path":["api","v1","sms","senders","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"msisdn\": \"string\",\n  \"callback_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7b8e8c83-3cea-4883-b493-0fff124c0c5a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","senders","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"msisdn\": \"string\",\n  \"callback_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"verification_id\": \"string\",\n  \"msisdn\": \"string\",\n  \"status\": \"string\",\n  \"code\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0e29fdf2-0e88-4b1f-ab96-6aa91d55e8ad","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","senders","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"msisdn\": \"string\",\n  \"callback_url\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3bcce464-ac9e-421d-a200-fe5ce5379a57","name":"Confirm DTMF voice PIN and bind Channel","request":{"name":"Confirm DTMF voice PIN and bind Channel","description":{"content":"Compare the PIN supplied by the customer to the one seven.io read aloud.\n\nOn success we flip the verification row to ``VERIFIED`` and create the\nSMS :class:`Channel`. On mismatch we flip to ``FAILED`` and 400.\n\n**Required Scopes:** ``channels:update``","type":"text/plain"},"url":{"path":["api","v1","sms","senders","confirm"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"verification_id\": \"string\",\n  \"code\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"617ee409-c687-47ea-8044-f10918d6bd91","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","senders","confirm"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"verification_id\": \"string\",\n  \"code\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"verification_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"msisdn\": \"string\",\n  \"status\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4baeb146-d730-487c-801b-77bec36437c8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","senders","confirm"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"verification_id\": \"string\",\n  \"code\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"27ef628a-ae93-420f-af8e-b83a355fdf29","name":"Register an alphanumeric SMS sender id (no verification)","request":{"name":"Register an alphanumeric SMS sender id (no verification)","description":{"content":"Register an alphanumeric sender id for outbound campaigns.\n\nEnforces seven.io's 11-character upper bound. Replies are not possible\nfor alphanumeric senders — the frontend copy communicates this.\n\n**Required Scopes:** ``channels:update``","type":"text/plain"},"url":{"path":["api","v1","sms","senders","alphanumeric"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"sender_id\": \"stri\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6e85e968-6699-4869-9c70-5438a1488a96","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","senders","alphanumeric"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"sender_id\": \"stri\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"string\",\n  \"sender_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"60e4697d-946c-44fa-b0e9-a707d8236769","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","senders","alphanumeric"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"sender_id\": \"stri\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"36664b5f-0072-4f34-b216-effe4c2e68df","name":"List the tenant's configured SMS senders","request":{"name":"List the tenant's configured SMS senders","description":{"content":"List every SMS sender configured for the tenant.\n\nThe frontend cannot get this from ``/channels``: ``ChannelResponse``\ndeliberately omits ``Channel.config`` (it holds API tokens and secrets),\nso ``sender_type`` / ``mode`` / ``msisdn_or_alpha`` were invisible. This\nendpoint returns a hand-whitelisted projection of those non-secret facts.\n``seven_io_subaccount_id`` and every other credential stay server-side.\n\nInactive / archived senders ARE included so the UI can show them as\narchived, but they are never ``is_default_for_send``.\n\nArchived channels have ``config = None`` (``Channel.archive()`` calls\n``_clear_credentials()``), so ``sender_type`` is recovered from the\n``sms_phone_numbers.number_type`` row (which survives archiving) or from\nthe identifier shape. One case remains genuinely undecidable: an archived\nrow with no ``sms_phone_numbers`` row and a phone-shaped identifier, where\n``dedicated`` and ``verified_own`` are indistinguishable. Those rows are\nomitted (and logged) rather than guessed — ``pagination.total`` counts only\nrows that are actually returned. Active channels always carry\n``config[\"sender_type\"]``, so a live sender can never be omitted.\n\n``is_default_for_send`` marks the ONE sender an auto-selected send will\nactually use. It comes from the same\n:func:`app.services.sms.sender_identity.pick_default_sms_channel` helper\nthe send path in ``app/api/messages.py`` calls, so the badge is truthful\nby construction rather than by convention.\n\n**Required Scopes:** ``channels:read``","type":"text/plain"},"url":{"path":["api","v1","sms","senders"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"292291d2-0967-48c9-9090-657fdd04f56c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","senders"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5b858d10-fe75-4c9c-b344-7f9383341d0b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","senders"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4f3e6b6c-3826-4d5a-baa4-3f09dce0d9b7","name":"Release a dedicated number or archive an alphanumeric/verified sender","request":{"name":"Release a dedicated number or archive an alphanumeric/verified sender","description":{"content":"Delete / release an SMS sender.\n\nFor ``dedicated`` senders this calls\n:meth:`SmsProvisioningService.release_number` (which talks to\nseven.io). For ``alphanumeric`` / ``verified_own`` senders we only\narchive the :class:`Channel` row — no seven.io resource to release.\n\n**Required Scopes:** ``channels:delete``","type":"text/plain"},"url":{"path":["api","v1","sms","senders",":channel_id"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"immediate","value":"false","description":"If true, release seven.io number immediately"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"2405be6c-2c01-4e61-b281-9c0c34e76591","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","senders",":channel_id"],"host":["{{baseUrl}}"],"query":[{"key":"immediate","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"channel_id\": \"string\",\n  \"released\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ba4105a1-1fd7-46be-844d-2d75b522ea64","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","senders",":channel_id"],"host":["{{baseUrl}}"],"query":[{"key":"immediate","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"350f1f61-a564-420d-9d17-c18b926bd1ed","name":"Estimated retail price to send one SMS to a country / number","request":{"name":"Estimated retail price to send one SMS to a country / number","description":{"content":"Estimate the tenant's retail per-segment SMS price.\n\nAccepts either a ``phone`` (preferred — country resolved by E.164\nprefix), a ``country`` ISO-2 hint, or both. Pricing is sourced live\nfrom seven.io's ``GET /api/pricing`` (cached 24h in Redis), with a\nbundled fallback file used if both Redis and the live API are\nunreachable.\n\nThe returned ``platform_fee_eur`` is the MIN price across all networks\nfor the destination country (a conservative estimate — actual route\nmay cost more for a specific recipient). ``sendseven_fee_eur`` is our\nflat margin. ``total_per_segment_eur = platform_fee + sendseven_fee``.\n\n**Required Scopes:** ``channels:read``","type":"text/plain"},"url":{"path":["api","v1","sms","message-pricing"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"phone","value":"string","description":"Recipient MSISDN (E.164)"},{"disabled":false,"key":"country","value":"st","description":"ISO-3166 alpha-2 (e.g. 'DE') — alternative to phone"},{"disabled":false,"key":"text","value":"string","description":"Optional message body. When supplied, response includes segment count + total cost."},{"disabled":false,"key":"append_opt_out_link","value":"false","description":"Price the text as a Reach campaign with the SMS opt-out link enabled: a representative ' Unsubscribe: https://c.sendseven.com/<code>' suffix (same length and encoding as the real per-recipient link) is appended before segments, char_count and total are computed."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2b71f2ac-b613-42aa-9a27-19adbab5c0ce","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","message-pricing"],"host":["{{baseUrl}}"],"query":[{"key":"phone","value":"string"},{"key":"country","value":"st"},{"key":"text","value":"string"},{"key":"append_opt_out_link","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"platform_fee_eur\": \"+000249229895\",\n  \"sendseven_fee_eur\": \"+00000018.\",\n  \"total_per_segment_eur\": \"004993557.218551700\",\n  \"price_per_message_eur\": \"000000000012779297\",\n  \"total_eur\": \"+0008554066\",\n  \"source\": \"string\",\n  \"country_iso\": \"string\",\n  \"country_name\": \"string\",\n  \"country_code\": \"string\",\n  \"prefix\": \"string\",\n  \"phone_sample\": \"string\",\n  \"segments\": 1,\n  \"encoding\": \"string\",\n  \"char_count\": 0,\n  \"is_supported\": true,\n  \"quote_required\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d46cf587-b740-4a22-9070-63f58293409b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","sms","message-pricing"],"host":["{{baseUrl}}"],"query":[{"key":"phone","value":"string"},{"key":"country","value":"st"},{"key":"text","value":"string"},{"key":"append_opt_out_link","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0b3a2501-d31c-406e-9cae-11f13c1a58ef","name":"Full per-country SMS pricelist (platform fee + SendSeven margin)","request":{"name":"Full per-country SMS pricelist (platform fee + SendSeven margin)","description":{"content":"Return the full SMS pricelist as a per-country table.\n\nUsed by the frontend pricing page. Pricing is sourced live from\nseven.io (cached 24h), with a bundled fallback file as last resort.\nThe ``source`` field reports which one served this request.\n\n**Required Scopes:** ``channels:read``","type":"text/plain"},"url":{"path":["api","v1","sms","pricelist"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"113f35fe-f754-4dbc-a31e-d167ae0a2e5b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","sms","pricelist"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"countries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"sendseven_margin_eur\": \"0000779644260052\",\n  \"source\": \"string\",\n  \"currency\": \"EUR\",\n  \"last_updated\": \"string\",\n  \"supported_countries\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"4bebe599-3523-4a47-9514-910091dea3fb","name":"Social Posts","description":{"content":"Create, schedule, and manage social media posts across connected channels.","type":"text/plain"},"item":[{"id":"372ff36d-6ed5-4463-bded-a97e52883de6","name":"Create, schedule or publish a social post","request":{"name":"Create, schedule or publish a social post","description":{"content":"Author a post and publish it to one or more **Instagram** / **Facebook Page**\nchannels. Each channel becomes a target that succeeds or fails independently.\n\nThree modes:\n\n* **Draft** — omit both `scheduled_at` and `publish_now`. Saved as `draft`.\n* **Schedule** — set `scheduled_at` (future, UTC). Saved as `scheduled`; the\n  scheduler tick publishes it.\n* **Publish now** — set `publish_now: true`. Publishes synchronously and returns\n  the result, including per-target status and `published_count` /\n  `failed_count` / `skipped_count`.\n\nFormats: `text` (Facebook only), `image`, `video`, `reel` (Instagram only).\nInstagram always requires media; `text` posts must not carry media. Every media\nitem is an attachment UUID (upload first via `POST /api/v1/attachments/*`).\n\n**Required Scopes:** `campaigns:create`","type":"text/plain"},"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"format\": \"video\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2004-11-27T12:37:51.872Z\",\n  \"publish_now\": false,\n  \"is_ai_generated\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8c674da3-bd70-4d75-911e-900e19c928a5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"format\": \"text\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2000-01-11T19:19:34.398Z\",\n  \"publish_now\": false,\n  \"is_ai_generated\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"format\": \"string\",\n  \"updated_at\": \"string\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"scheduled_at\": \"string\",\n  \"published_at\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"error_message\": \"string\",\n  \"targets\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"published_count\": 2260,\n  \"failed_count\": 6714,\n  \"skipped_count\": 2124\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6e84f429-c490-46b0-9382-cbf66a0e02ca","name":"Validation failed: `channel_inactive`, `channel_type_not_supported`, `format_not_supported`, `scheduled_at_in_past`.","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"format\": \"text\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2000-01-11T19:19:34.398Z\",\n  \"publish_now\": false,\n  \"is_ai_generated\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"b7411a10-8252-421c-8d5a-8975f6ef5ecb","name":"`social_comments_beta` not enabled (`feature_not_enabled`).","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"format\": \"text\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2000-01-11T19:19:34.398Z\",\n  \"publish_now\": false,\n  \"is_ai_generated\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"8874e5ff-f310-4575-b3d1-c301c231e3f1","name":"A `channel_id` or media attachment id was not found.","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"format\": \"text\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2000-01-11T19:19:34.398Z\",\n  \"publish_now\": false,\n  \"is_ai_generated\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"0974b5a0-31ee-4c4f-8b04-acd9b4c43152","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"format\": \"text\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2000-01-11T19:19:34.398Z\",\n  \"publish_now\": false,\n  \"is_ai_generated\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6bb89d7f-37ff-46ba-9ebe-a7f737099bf9","name":"List authored social posts","request":{"name":"List authored social posts","description":{"content":"List authored posts for this workspace, newest first, with each post's\nper-target status. Filter by `status`, and/or by a `scheduled_at` calendar\nwindow with `scheduled_from` / `scheduled_to` (ISO 8601, UTC, both inclusive) —\nthe two combine. `scheduled_from` after `scheduled_to` is a 400.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"string","description":"Filter by post status: `draft`, `scheduled`, `publishing`, `published`, `partially_failed`, `failed`, `cancelled`."},{"disabled":false,"key":"scheduled_from","value":"2025-01-08T09:00:57.148Z","description":"Calendar lower bound (ISO 8601, UTC, inclusive). Only posts whose `scheduled_at` is at or after this instant are returned. Combinable with `status` and `scheduled_to`."},{"disabled":false,"key":"scheduled_to","value":"2025-01-08T09:00:57.148Z","description":"Calendar upper bound (ISO 8601, UTC, inclusive). Only posts whose `scheduled_at` is at or before this instant are returned."},{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)."},{"disabled":false,"key":"page_size","value":"20","description":"Items per page."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"91722124-b730-4d0f-a1df-e618c2379456","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"string"},{"key":"scheduled_from","value":"2025-01-08T09:00:57.148Z"},{"key":"scheduled_to","value":"2025-01-08T09:00:57.148Z"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2afeb73f-19a8-4d59-9de8-e248cb49bdcd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"string"},{"key":"scheduled_from","value":"2025-01-08T09:00:57.148Z"},{"key":"scheduled_to","value":"2025-01-08T09:00:57.148Z"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ce97aa17-9c9d-4463-beba-93e7b7fd9649","name":"Get one authored social post","request":{"name":"Get one authored social post","description":{"content":"Get one authored post with its per-target status.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ba2a6ae6-5236-421e-b3e6-1412d7dc4516","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"format\": \"string\",\n  \"updated_at\": \"string\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"scheduled_at\": \"string\",\n  \"published_at\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"error_message\": \"string\",\n  \"targets\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"published_count\": 2260,\n  \"failed_count\": 6714,\n  \"skipped_count\": 2124\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9adfb03a-5ac4-422b-a949-a7c998051bfc","name":"Post not found (`post_not_found`).","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"27251bed-ea17-4539-81a4-f358f182bdb6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bd33645a-23c0-4d83-9fb5-22dca0794466","name":"Edit or cancel a draft / scheduled post","request":{"name":"Edit or cancel a draft / scheduled post","description":{"content":"Edit a `draft` or `scheduled` post (caption / media / `scheduled_at` /\n`channel_ids`), or **cancel** it with `cancel: true`.\n\n* Editing is allowed only while the post is `draft` or `scheduled`.\n* Changing `media_attachment_ids` re-validates ownership and re-bumps retention.\n* Changing `channel_ids` reconciles targets: removed channels are dropped, added\n  channels get a new `pending` target.\n* `cancel: true` moves the post to `cancelled`; rejected once it is `publishing`\n  or `published`. Cannot be combined with edit fields.\n\n**Required Scopes:** `campaigns:update`","type":"text/plain"},"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"1991-08-17T22:51:41.666Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": true,\n  \"cancel\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"bb50daaf-25b2-4d03-a361-153241d1bf71","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2002-02-19T02:56:29.002Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"cancel\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"format\": \"string\",\n  \"updated_at\": \"string\",\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"scheduled_at\": \"string\",\n  \"published_at\": \"string\",\n  \"created_by_user_id\": \"string\",\n  \"error_message\": \"string\",\n  \"targets\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"published_count\": 2260,\n  \"failed_count\": 6714,\n  \"skipped_count\": 2124\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cc89228c-5767-409d-bfc1-267b2a3f59f4","name":"Edit fields on a non-editable post, cancel on a publishing/published post, or a validation error (`post_not_editable`, `post_not_cancellable`, `scheduled_at_in_past`, channel/format errors).","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2002-02-19T02:56:29.002Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"cancel\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"75524f6a-5ef0-484f-8fb6-3bfe1ffe8a54","name":"`social_comments_beta` not enabled.","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2002-02-19T02:56:29.002Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"cancel\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"b82c356d-568f-48f8-b9dd-a06a6f460af2","name":"Post, channel, or attachment not found.","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2002-02-19T02:56:29.002Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"cancel\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"f81cb805-a54c-495e-8401-a2e8cf2b5a4e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"caption\": \"string\",\n  \"first_comment\": \"string\",\n  \"media_attachment_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"scheduled_at\": \"2002-02-19T02:56:29.002Z\",\n  \"channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_ai_generated\": false,\n  \"cancel\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7e62c343-ebb6-4580-a21f-6b15f8dee636","name":"Which channels can publish posts, and which formats","request":{"name":"Which channels can publish posts, and which formats","description":{"content":"Report, for every Instagram / Facebook Page channel in this workspace, whether\nit can publish authored posts and which formats it supports (`text`, `image`,\n`video`, `reel`). Fail-closed: unknown channel types report `can_publish: false`.\n\n`beta_enabled` reports the tenant's `social_comments_beta` enrolment separately.\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","social-posts","capabilities","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"397e16b5-fba3-461a-b4f8-c1f57c3d0fc5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts","capabilities","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"beta_enabled\": true,\n  \"formats\": [\n    \"string\",\n    \"string\"\n  ],\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"24552ade-1ee9-41f7-ab73-e40ee211531a","name":"Live account / page insights for one connected channel","request":{"name":"Live account / page insights for one connected channel","description":{"content":"Fetch account-level (Instagram) or page-level (Facebook) insights LIVE for one\nconnected channel. Nothing is stored — this proxies Meta's `/insights` on each\ncall. If the page was connected before insights access was granted, the response\nis `authorized: false` with `error_code: insights_not_authorized` (a 200, not a\n500) so the UI can prompt a reconnect.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","social-posts","insights","account"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"(Required) The IG / FB Page channel to read."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6746d87a-db94-4eda-8f80-b765f9119222","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts","insights","account"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"string\",\n  \"platform\": \"string\",\n  \"retrieved_at\": \"string\",\n  \"object_id\": \"string\",\n  \"authorized\": true,\n  \"error_code\": \"string\",\n  \"message\": \"string\",\n  \"metrics\": {\n    \"reach\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"impressions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"engagement\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"likes\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"comments\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"shares\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"saves\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"video_views\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"clicks\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a88d11f3-b102-4250-b528-06d2d6527b2b","name":"Channel is not IG/FB, or its config is incomplete.","originalRequest":{"url":{"path":["api","v1","social-posts","insights","account"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"method":"GET","body":{}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e402fcb4-2b71-44a0-8fe0-9c8b54b3cc21","name":"`social_comments_beta` not enabled.","originalRequest":{"url":{"path":["api","v1","social-posts","insights","account"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"2b8ea111-7a6f-4a40-b0f0-46e1976c8a61","name":"Channel not found in this workspace.","originalRequest":{"url":{"path":["api","v1","social-posts","insights","account"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"92303f43-d99b-4324-a268-5d2b2761884e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts","insights","account"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3317a54e-4292-4d17-89e1-75b91def4c75","name":"Cached insights for one authored post's published targets","request":{"name":"Cached insights for one authored post's published targets","description":{"content":"Return insights for every PUBLISHED target of one authored post, served from a\nper-target cache. Each target carries its own `last_refreshed_at`; the top-level\n`last_refreshed_at` is the OLDEST of those (the staleness of the stalest number).\n\nNumbers are NOT re-fetched on every load. A target that has never been cached\n(`last_refreshed_at: null`) is populated LIVE once, on this first read, and\npersisted so the next load is served from cache. Use\n`POST /{post_id}/insights/refresh` to force a fresh read of all targets.\n\nA target whose page lacks insights access degrades to `authorized: false` +\n`error_code: insights_not_authorized`; a target whose channel was deleted\ndegrades to `insights_unavailable`; a target that never published (no\n`meta_post_id`) is omitted.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","social-posts",":post_id","insights"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3ee24148-4f2a-45b2-a9d8-6dd6c4ecaf73","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"post_id\": \"string\",\n  \"retrieved_at\": \"string\",\n  \"targets\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"last_refreshed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"addbb89e-84a1-4c4f-abbc-e02c7cf68ad4","name":"`social_comments_beta` not enabled.","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"GET","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"cba89f1c-8c4a-41bd-ba79-cb16b09745de","name":"Post not found (`post_not_found`).","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"GET","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"96a15a79-ad20-43d8-98b1-dae5485e7c71","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"27b2ff74-7c47-42ff-aff2-b613eb8a5771","name":"Force-refresh cached insights for one authored post's targets","request":{"name":"Force-refresh cached insights for one authored post's targets","description":{"content":"Force a LIVE re-fetch of Meta insights for every PUBLISHED target of one authored\npost, UPSERT the per-target cache, and return the freshly-cached\n`PostInsightsResponse`. Every readable target's `last_refreshed_at` is stamped to\nnow; the top-level `last_refreshed_at` is the oldest of the returned targets.\n\nDegrade behavior matches `GET /{post_id}/insights` (unauthorized page →\n`insights_not_authorized`, deleted channel → `insights_unavailable`, and the\ndegraded state is persisted too). A target that never published is omitted.\n\n**Required Scopes:** `campaigns:read`","type":"text/plain"},"url":{"path":["api","v1","social-posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"9a8d9e40-ffde-494f-b50e-3fca99a6dd46","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"post_id\": \"string\",\n  \"retrieved_at\": \"string\",\n  \"targets\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"last_refreshed_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"978bce7f-f2df-4468-a646-586ee972d20b","name":"`social_comments_beta` not enabled.","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"POST","body":{}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"25e21f46-996e-4535-aac6-afe7491112e5","name":"Post not found (`post_not_found`).","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"method":"POST","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"1564835d-9fa2-4469-a11e-44903cec901a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","social-posts",":post_id","insights","refresh"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"post_id","description":"(Required) The authored post id."}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"1c2b2cf7-dd44-4605-a8ef-63d368eacd4f","name":"Subscriptions","description":{"content":"Manage contact subscription preferences across channels including opt-in/opt-out status.","type":"text/plain"},"item":[{"id":"dc547e47-48b4-4ada-99a1-e95cf002cdbe","name":"Get contact subscriptions","request":{"name":"Get contact subscriptions","description":{"content":"Get all subscriptions for a specific contact\n\n**🔐 Required Scopes:** `contacts:read`\n","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","subscriptions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"15e13c52-47d9-477a-bca4-2091c1de55ff","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","subscriptions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"contact_id\": \"contact-123\",\n  \"subscriptions\": [],\n  \"total\": 5\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9128c773-57a4-4a8a-9f46-2282f307c031","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","subscriptions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"52d7f847-1d31-4c4b-9c03-154cdbf19494","name":"Subscribe contact","request":{"name":"Subscribe contact","description":{"content":"Subscribe a contact to a list via a specific channel\n\n**🔐 Required Scopes:** `contacts:update`\n","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","subscriptions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_metadata\": {},\n  \"channel_type\": \"email\",\n  \"list_id\": \"list-123\",\n  \"opt_in_ip\": \"192.168.1.1\",\n  \"opt_in_method\": \"widget\",\n  \"send_double_opt_in\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7fe08d91-9166-4586-8e48-ae0ad7bebdb7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","subscriptions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_metadata\": {},\n  \"channel_type\": \"email\",\n  \"list_id\": \"list-123\",\n  \"opt_in_ip\": \"192.168.1.1\",\n  \"opt_in_method\": \"widget\",\n  \"send_double_opt_in\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"list_id\": \"string\",\n  \"channel_type\": \"browser_push\",\n  \"status\": \"unsubscribed\",\n  \"opt_in_method\": \"widget\",\n  \"created_at\": \"1984-09-08T01:44:52.769Z\",\n  \"updated_at\": \"2022-11-12T12:48:26.528Z\",\n  \"list_name\": \"string\",\n  \"channel_id\": \"string\",\n  \"opt_in_ip\": \"string\",\n  \"opt_in_user_agent\": \"string\",\n  \"opt_in_source_url\": \"string\",\n  \"opt_in_widget_id\": \"string\",\n  \"opt_in_confirmed_at\": \"1982-09-23T17:13:19.730Z\",\n  \"opt_in_token_expires_at\": \"2007-04-17T16:30:42.590Z\",\n  \"unsubscribed_at\": \"2021-11-27T10:21:31.895Z\",\n  \"unsubscribe_reason\": \"string\",\n  \"unsubscribe_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_metadata\": {\n    \"key_0\": 5223,\n    \"key_1\": 5368.733144510654\n  },\n  \"last_message_sent_at\": \"1954-02-09T00:06:36.627Z\",\n  \"last_engagement_at\": \"1986-07-06T23:37:45.977Z\",\n  \"bounce_count\": 0,\n  \"failure_count\": 0,\n  \"last_bounce_at\": \"2014-10-06T18:57:03.942Z\",\n  \"last_failure_at\": \"1980-04-21T10:01:53.056Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5795c1d0-4ce5-4e9a-9217-4a11d882afe8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","subscriptions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_metadata\": {},\n  \"channel_type\": \"email\",\n  \"list_id\": \"list-123\",\n  \"opt_in_ip\": \"192.168.1.1\",\n  \"opt_in_method\": \"widget\",\n  \"send_double_opt_in\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"658f352e-af61-4789-9599-82cf99583633","name":"Unsubscribe contact","request":{"name":"Unsubscribe contact","description":{"content":"Unsubscribe a contact from a list\n\n**🔐 Required Scopes:** `contacts:update`\n","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","subscriptions",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{"mode":"raw","raw":"{\n  \"method\": \"manual\",\n  \"reason\": \"Too many messages\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"5bbb2d37-fb71-43e1-8a89-793e989ff94a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","subscriptions",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{"mode":"raw","raw":"{\n  \"method\": \"manual\",\n  \"reason\": \"Too many messages\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Unsubscribed successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1ad1e9a7-b58d-4f3d-8f97-d693935f4b75","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","subscriptions",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{"mode":"raw","raw":"{\n  \"method\": \"manual\",\n  \"reason\": \"Too many messages\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c6b74ed5-85ab-4b71-8bce-41231660e57f","name":"Update subscription","request":{"name":"Update subscription","description":{"content":"Update a subscription status or metadata\n\n**🔐 Required Scopes:** `contacts:update`\n","type":"text/plain"},"url":{"path":["api","v1","subscriptions",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"channel_metadata\": {\n    \"preferred_time\": \"morning\"\n  },\n  \"status\": \"subscribed\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"88f49761-f41a-4ff4-8b98-df6b17f8cd4f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","subscriptions",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"channel_metadata\": {\n    \"preferred_time\": \"morning\"\n  },\n  \"status\": \"subscribed\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"list_id\": \"string\",\n  \"channel_type\": \"browser_push\",\n  \"status\": \"unsubscribed\",\n  \"opt_in_method\": \"widget\",\n  \"created_at\": \"1984-09-08T01:44:52.769Z\",\n  \"updated_at\": \"2022-11-12T12:48:26.528Z\",\n  \"list_name\": \"string\",\n  \"channel_id\": \"string\",\n  \"opt_in_ip\": \"string\",\n  \"opt_in_user_agent\": \"string\",\n  \"opt_in_source_url\": \"string\",\n  \"opt_in_widget_id\": \"string\",\n  \"opt_in_confirmed_at\": \"1982-09-23T17:13:19.730Z\",\n  \"opt_in_token_expires_at\": \"2007-04-17T16:30:42.590Z\",\n  \"unsubscribed_at\": \"2021-11-27T10:21:31.895Z\",\n  \"unsubscribe_reason\": \"string\",\n  \"unsubscribe_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"channel_metadata\": {\n    \"key_0\": 5223,\n    \"key_1\": 5368.733144510654\n  },\n  \"last_message_sent_at\": \"1954-02-09T00:06:36.627Z\",\n  \"last_engagement_at\": \"1986-07-06T23:37:45.977Z\",\n  \"bounce_count\": 0,\n  \"failure_count\": 0,\n  \"last_bounce_at\": \"2014-10-06T18:57:03.942Z\",\n  \"last_failure_at\": \"1980-04-21T10:01:53.056Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7d2731d3-cd58-4983-8a52-5ea4db4086ea","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","subscriptions",":subscription_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"subscription_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"channel_metadata\": {\n    \"preferred_time\": \"morning\"\n  },\n  \"status\": \"subscribed\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b90fbf14-71ac-4596-aabb-4d0c550de992","name":"Get list subscribers","request":{"name":"Get list subscribers","description":{"content":"Get subscribers for a list with optional filtering by channel and status\n\n**🔐 Required Scopes:** `contacts:read`\n","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","subscribers"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_type","value":"messenger","description":"Filter by channel type"},{"disabled":false,"key":"status","value":"unsubscribed","description":"Filter by status"},{"disabled":false,"key":"limit","value":"100","description":"Maximum number of results"},{"disabled":false,"key":"offset","value":"0","description":"Pagination offset"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b54c6e79-a462-4626-aa81-d786bbfe4987","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","subscribers"],"host":["{{baseUrl}}"],"query":[{"key":"channel_type","value":"messenger"},{"key":"status","value":"unsubscribed"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"list_id\": \"list-123\",\n  \"subscriptions\": [],\n  \"total\": 100\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"858fd100-6780-49b0-b5ee-bc8b3ae9aeb8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","subscribers"],"host":["{{baseUrl}}"],"query":[{"key":"channel_type","value":"messenger"},{"key":"status","value":"unsubscribed"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"59a20091-f6f3-4948-8c24-7daa37952b07","name":"Get subscription statistics","request":{"name":"Get subscription statistics","description":{"content":"Get subscription statistics for a list broken down by channel\n\n**🔐 Required Scopes:** `contacts:read`\n","type":"text/plain"},"url":{"path":["api","v1","lists",":list_id","subscription-stats"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c6e8cbdf-9259-45c2-8303-9004d6cf6255","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","lists",":list_id","subscription-stats"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channels\": [\n    {\n      \"bounced\": 8,\n      \"channel_type\": \"email\",\n      \"complained\": 2,\n      \"pending\": 50,\n      \"subscribed\": 1400,\n      \"total\": 1500,\n      \"unsubscribed\": 40\n    },\n    {\n      \"bounced\": 0,\n      \"channel_type\": \"telegram\",\n      \"complained\": 0,\n      \"pending\": 10,\n      \"subscribed\": 980,\n      \"total\": 1000,\n      \"unsubscribed\": 10\n    }\n  ],\n  \"list_id\": \"list-123\",\n  \"list_name\": \"Weekly Newsletter\",\n  \"total_subscriptions\": 2500\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6cb0d354-7e07-4dd4-9f4d-e56d0cfbae95","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","lists",":list_id","subscription-stats"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"list_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5433a0e5-2b92-4341-8970-5afa535bc0b2","name":"Confirm double opt-in","request":{"name":"Confirm double opt-in","description":{"content":"Confirm a subscription using the double opt-in token (public endpoint). Returns only the confirmed subscription's status, channel type and confirmation time.","type":"text/plain"},"url":{"path":["api","v1","subscriptions","confirm",":token"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"3a490971-a6e7-4bd9-8d37-28e5b5257f29","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","subscriptions","confirm",":token"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Subscription confirmed successfully\",\n  \"subscription\": {\n    \"channel_type\": \"email\",\n    \"opt_in_confirmed_at\": \"2026-10-06T10:15:00Z\",\n    \"status\": \"subscribed\"\n  },\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"291b7f47-ce18-4c1c-a1d2-a1a0b17510d3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","subscriptions","confirm",":token"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"4beabb49-b0b3-4f4d-b47e-e39295d99603","name":"Tags","description":{"content":"Create color-coded tags and apply them to contacts and conversations for organization and filtering.","type":"text/plain"},"item":[{"id":"4a829211-5b13-4036-81e4-fde365a59b91","name":"Create Tag","request":{"name":"Create Tag","description":{"content":"Create a new tag.\n\nTags are used to categorize contacts and conversations. Each tag must have\na unique name within the tenant.\n\n**Required Scopes:** `tags:create` (management scope: tags can grant custom-inbox access, so agents holding only contacts/conversations:update cannot create/rename/delete them)","type":"text/plain"},"url":{"path":["api","v1","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"color\": \"#EF4444\",\n  \"description\": \"High-value customers\",\n  \"name\": \"VIP\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0062e792-eab5-4324-a338-af54e354abf1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"color\": \"#EF4444\",\n  \"description\": \"High-value customers\",\n  \"name\": \"VIP\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1959-02-15T07:38:57.831Z\",\n  \"color\": \"string\",\n  \"description\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6e4edffe-9344-48cb-85bf-bd369f912863","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"color\": \"#EF4444\",\n  \"description\": \"High-value customers\",\n  \"name\": \"VIP\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7329c2f2-e9d3-4490-bb67-963cf26f0a33","name":"List Tags","request":{"name":"List Tags","description":{"content":"List all tags for the tenant with pagination.\n\nReturns a paginated list of tags, optionally filtered by search term.\n\n**Required Scopes:** `contacts:read` OR `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","tags"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"},{"disabled":false,"key":"search","value":"string","description":"Search by tag name"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5a24a15e-e4d9-4b56-aee9-a107b7898a00","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tags"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f476b856-1a70-4f01-bf0f-12dbdb93daa4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tags"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"},{"key":"search","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c9578494-2c1b-4896-b262-69effe1c2cdb","name":"Get Tag","request":{"name":"Get Tag","description":{"content":"Get a specific tag by ID.\n\n**Required Scopes:** `contacts:read` OR `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f1ce1ec5-bcfd-4cbc-bebc-d7bfbb3216a6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1959-02-15T07:38:57.831Z\",\n  \"color\": \"string\",\n  \"description\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ef1176f9-d498-4eca-ab2d-8f2f83a63bab","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7eefc28a-8db5-40db-b7d4-8f42dbf0f1b6","name":"Update Tag","request":{"name":"Update Tag","description":{"content":"Update a tag.\n\nAll fields are optional. Only provided fields will be updated.\n\n**Required Scopes:** `tags:update` (management scope: tags can grant custom-inbox access, so agents holding only contacts/conversations:update cannot create/rename/delete them)","type":"text/plain"},"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"color\": \"#10B981\",\n  \"name\": \"Premium VIP\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e8e277e1-964b-4871-999f-149d65fd9a16","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"color\": \"#10B981\",\n  \"name\": \"Premium VIP\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1959-02-15T07:38:57.831Z\",\n  \"color\": \"string\",\n  \"description\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1c507631-aeee-42be-9c84-c3e37def1855","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"color\": \"#10B981\",\n  \"name\": \"Premium VIP\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e08c4e08-9044-4586-bd9f-42fb7f3584b9","name":"Delete Tag","request":{"name":"Delete Tag","description":{"content":"Delete a tag.\n\nThis will also remove the tag from all contacts and conversations.\n\n**Required Scopes:** `tags:delete` (management scope: tags can grant custom-inbox access, so agents holding only contacts/conversations:update cannot create/rename/delete them)","type":"text/plain"},"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"51328d2e-14ed-473a-a866-c6143225e4aa","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Resource deleted successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c49b4081-8e1b-4940-888f-798048ea766f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"75aa63be-5652-4eee-aeda-c1ce1b89f02e","name":"Add Tag To Conversation","request":{"name":"Add Tag To Conversation","description":{"content":"Add a tag to a conversation.\n\nIf the tag is already assigned to the conversation, this operation is idempotent.\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"494e2b59-ab55-41d1-9356-3ceeb046bb8e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Tag added to contact successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5d6e4997-f3ba-4b17-acd9-49c20577d12e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7908410b-0615-4d00-a15f-54caa4bd236e","name":"Remove Tag From Conversation","request":{"name":"Remove Tag From Conversation","description":{"content":"Remove a tag from a conversation.\n\n**Required Scopes:** `conversations:update`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"80bc4dfd-9d0e-4590-ad33-e01e6a37066b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Tag added to contact successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cbfa2f8d-54c6-455c-915e-1b6e8514fb63","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6ed214c2-76eb-473e-8cc1-fcb36f8bf54e","name":"Add Tag To Contact","request":{"name":"Add Tag To Contact","description":{"content":"Add a tag to a contact.\n\nIf the tag is already assigned to the contact, this operation is idempotent.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"2e3abbb1-8271-4cbe-9898-06ce661defe7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Tag added to contact successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"899775d1-eea9-417b-98fe-3e96e01a5b74","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"574f1bbf-acc2-4323-882b-e66489904d2b","name":"Remove Tag From Contact","request":{"name":"Remove Tag From Contact","description":{"content":"Remove a tag from a contact.\n\n**Required Scopes:** `contacts:update`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"3be42bc5-0701-4b34-a112-afbd61f69e9b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Tag added to contact successfully\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cc43445a-8bbd-4665-b398-36ae9eb2564a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","tags",":tag_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"tag_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"5dd5c261-2b8e-4f33-9afe-a208c58d0ecd","name":"Tenant Email Settings","description":{"content":"Configure tenant-level email settings including sending defaults and delivery preferences.","type":"text/plain"},"item":[{"id":"582b98be-d1b5-46c6-8473-deebaf1b27e5","name":"Get Email Settings","request":{"name":"Get Email Settings","description":{"content":"Get tenant email settings.\n\nReturns the tenant's email configuration including campaign defaults,\nsupport defaults, and settings. Creates default settings if none exist.\n\n**Required Scopes:** `email_integrations:read`\n\n**Database:** SHARD (email_settings table)","type":"text/plain"},"url":{"path":["api","v1","tenant-email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"43036a70-c0f5-4acc-9c49-6f1aacf815f6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenant-email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"campaign_from_email\": \"string\",\n  \"campaign_from_name\": \"string\",\n  \"campaign_reply_to\": \"string\",\n  \"support_from_email\": \"string\",\n  \"support_from_name\": \"string\",\n  \"support_integration_id\": \"string\",\n  \"campaign_default_mailbox_id\": \"string\",\n  \"support_default_mailbox_id\": \"string\",\n  \"doi_mailbox_id\": \"string\",\n  \"allow_custom_sender\": false,\n  \"double_opt_in_enabled\": false,\n  \"double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"track_opens_default\": true,\n  \"track_clicks_default\": true\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"353e427a-24ae-43eb-bbdf-9767df27de1a","name":"Update Email Settings","request":{"name":"Update Email Settings","description":{"content":"Update tenant email settings.\n\nPartial update - only provided fields are changed. Validates from_email\nfields against sendable domains if provided.\n\n**Required Scopes:** `email_integrations:update`\n\n**Database:** SHARD (email_settings table)","type":"text/plain"},"url":{"path":["api","v1","tenant-email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"campaign_from_email\": \"string\",\n  \"campaign_from_name\": \"string\",\n  \"campaign_reply_to\": \"string\",\n  \"support_from_email\": \"string\",\n  \"support_from_name\": \"string\",\n  \"support_integration_id\": \"string\",\n  \"campaign_default_mailbox_id\": \"string\",\n  \"support_default_mailbox_id\": \"string\",\n  \"doi_mailbox_id\": \"string\",\n  \"allow_custom_sender\": false,\n  \"double_opt_in_enabled\": false,\n  \"double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"track_opens_default\": true,\n  \"track_clicks_default\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3998f397-63d5-4f52-abaf-47ec28f3096b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenant-email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"campaign_from_email\": \"string\",\n  \"campaign_from_name\": \"string\",\n  \"campaign_reply_to\": \"string\",\n  \"support_from_email\": \"string\",\n  \"support_from_name\": \"string\",\n  \"support_integration_id\": \"string\",\n  \"campaign_default_mailbox_id\": \"string\",\n  \"support_default_mailbox_id\": \"string\",\n  \"doi_mailbox_id\": \"string\",\n  \"allow_custom_sender\": false,\n  \"double_opt_in_enabled\": false,\n  \"double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"track_opens_default\": true,\n  \"track_clicks_default\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\",\n  \"campaign_from_email\": \"string\",\n  \"campaign_from_name\": \"string\",\n  \"campaign_reply_to\": \"string\",\n  \"support_from_email\": \"string\",\n  \"support_from_name\": \"string\",\n  \"support_integration_id\": \"string\",\n  \"campaign_default_mailbox_id\": \"string\",\n  \"support_default_mailbox_id\": \"string\",\n  \"doi_mailbox_id\": \"string\",\n  \"allow_custom_sender\": false,\n  \"double_opt_in_enabled\": false,\n  \"double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"track_opens_default\": true,\n  \"track_clicks_default\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1103bb18-c3a1-48ea-8c0d-318b1c67e9ec","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenant-email-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"campaign_from_email\": \"string\",\n  \"campaign_from_name\": \"string\",\n  \"campaign_reply_to\": \"string\",\n  \"support_from_email\": \"string\",\n  \"support_from_name\": \"string\",\n  \"support_integration_id\": \"string\",\n  \"campaign_default_mailbox_id\": \"string\",\n  \"support_default_mailbox_id\": \"string\",\n  \"doi_mailbox_id\": \"string\",\n  \"allow_custom_sender\": false,\n  \"double_opt_in_enabled\": false,\n  \"double_opt_in_template_id\": \"string\",\n  \"compliance_footer_html\": \"string\",\n  \"track_opens_default\": true,\n  \"track_clicks_default\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0ef26765-2ddc-4770-a634-49e152ba4a6a","name":"Get Sendable Domains","request":{"name":"Get Sendable Domains","description":{"content":"List verified domains and addresses the tenant can send email from.\n\nAggregates sendable domains from all email integrations and provider configs:\n- SendGrid/SendGrid Managed/Mailgun BYOK providers with verified domains\n- SES managed integrations with verified domains\n- Gmail OAuth integrations (fixed address, support-only)\n- SMTP/IMAP integrations (fixed address, support-only)\n\nUse the `purpose` query parameter to filter:\n- `?purpose=campaign` - only campaign-capable sources\n- `?purpose=support` - all sources (support can use any sender)\n- omit - all sources (backwards compatible)\n\nEach entry includes a `campaign_capable` boolean indicating whether it can\nbe used for email campaigns.\n\n**Required Scopes:** `email_integrations:read`\n\n**Database:** SHARD (email_provider_configs, email_integrations tables)","type":"text/plain"},"url":{"path":["api","v1","tenant-email-settings","sendable-domains"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"purpose","value":"support","description":"Filter by intended use: 'campaign' returns only campaign-capable sources (SendGrid, Mailgun, SES); 'support' returns all sources; omit for all sources (default)."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1350f02d-2c1d-470d-a387-6ffc9d29b359","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenant-email-settings","sendable-domains"],"host":["{{baseUrl}}"],"query":[{"key":"purpose","value":"support"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"domains\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fc1c707b-db1f-4d2f-9363-90f021d9fd6a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenant-email-settings","sendable-domains"],"host":["{{baseUrl}}"],"query":[{"key":"purpose","value":"support"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"a99e162d-2902-4724-86df-8c0cce0570ef","name":"Tenants","description":{"content":"Manage tenant (workspace) settings, branding, and multi-tenant configuration.","type":"text/plain"},"item":[{"id":"244a9aef-703e-4d1e-9445-0ddb7a9130b3","name":"Create Tenant","request":{"name":"Create Tenant","description":{"content":"Create a new tenant (organization) and start trial","type":"text/plain"},"url":{"path":["api","v1","tenants"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"company_email\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"pricing_model_id\": \"string\",\n  \"ai_features_enabled\": true,\n  \"multi_agent_mode\": true,\n  \"auto_summarize_on_close\": \"ask\",\n  \"auto_transcript_export_format\": \"none\",\n  \"auto_summarize_live_chat\": true,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"suppress_customer_alert\": false,\n  \"default_channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"support_email\": \"string\",\n  \"default_timezone\": \"string\",\n  \"default_country\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"d7069558-8ff5-478d-8540-e0127f9d0375","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"company_email\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"pricing_model_id\": \"string\",\n  \"ai_features_enabled\": true,\n  \"multi_agent_mode\": true,\n  \"auto_summarize_on_close\": \"ask\",\n  \"auto_transcript_export_format\": \"none\",\n  \"auto_summarize_live_chat\": true,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"suppress_customer_alert\": false,\n  \"default_channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"support_email\": \"string\",\n  \"default_timezone\": \"string\",\n  \"default_country\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"is_trial\": false,\n  \"trial_ends_at\": \"1975-11-30T14:31:49.706Z\",\n  \"is_active\": true,\n  \"subscription_tier\": \"string\",\n  \"multi_agent_mode\": false,\n  \"auto_summarize_on_close\": \"string\",\n  \"auto_summarize_live_chat\": true,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"created_at\": \"1992-02-20T02:46:39.442Z\",\n  \"pricing_model_id\": \"string\",\n  \"auto_transcript_export_format\": \"none\",\n  \"live_chat_contact_visibility\": \"never\",\n  \"duplicate_contact_mode\": \"auto_merge\",\n  \"faq_generation_mode\": \"draft\",\n  \"kb_correction_mode\": \"moderated\",\n  \"kb_auto_apply_threshold\": 0.8,\n  \"faq_min_cluster_size\": 2,\n  \"bot_notification_policy\": \"always\",\n  \"brand_colors\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"logo_variants\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"logo_url\": \"string\",\n  \"dashboard_wait_threshold_normal\": 30,\n  \"dashboard_wait_threshold_urgent\": 120,\n  \"sms_enabled\": false,\n  \"rcs_enabled\": false,\n  \"flows_enabled\": false,\n  \"default_timezone\": \"UTC\",\n  \"default_country\": \"string\",\n  \"default_language\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a6099d5e-f653-48fa-939e-27af48321782","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"company_email\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"pricing_model_id\": \"string\",\n  \"ai_features_enabled\": true,\n  \"multi_agent_mode\": true,\n  \"auto_summarize_on_close\": \"ask\",\n  \"auto_transcript_export_format\": \"none\",\n  \"auto_summarize_live_chat\": true,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"suppress_customer_alert\": false,\n  \"default_channels\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"support_email\": \"string\",\n  \"default_timezone\": \"string\",\n  \"default_country\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"80414fe1-128b-4483-b9c5-2acf6dffdfab","name":"Get My Tenants","request":{"name":"Get My Tenants","description":{"content":"Get current user's tenants","type":"text/plain"},"url":{"path":["api","v1","tenants","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"4ff78494-13b8-4682-899e-cb3827add604","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"slug\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"billing_account_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_trial\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"trial_ends_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subscription_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"multi_agent_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_summarize_on_close\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_summarize_live_chat\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allow_messaging_other_agents_conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pricing_model_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_transcript_export_format\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"live_chat_contact_visibility\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_contact_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"faq_generation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_correction_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_auto_apply_threshold\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"faq_min_cluster_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_notification_policy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"brand_colors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"company_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"company_domain\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logo_variants\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logo_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"dashboard_wait_threshold_normal\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"dashboard_wait_threshold_urgent\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sms_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flows_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_country\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"slug\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"billing_account_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_trial\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"trial_ends_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subscription_tier\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"multi_agent_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_summarize_on_close\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_summarize_live_chat\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allow_messaging_other_agents_conversations\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pricing_model_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"auto_transcript_export_format\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"live_chat_contact_visibility\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"duplicate_contact_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"faq_generation_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_correction_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"kb_auto_apply_threshold\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"faq_min_cluster_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bot_notification_policy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"brand_colors\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"company_name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"company_domain\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logo_variants\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logo_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"dashboard_wait_threshold_normal\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"dashboard_wait_threshold_urgent\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"sms_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rcs_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"flows_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_country\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_language\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"43c07492-b7f4-45e6-978c-131e5de28ed0","name":"Get Tenant Features","request":{"name":"Get Tenant Features","description":{"content":"Get feature availability for the current tenant.\n\nReturns which UI and API features are enabled based on the\nbilling account's package type (Standard vs API Only).\n\nThis endpoint is designed for frontend feature gating.\nAll authenticated users can access this endpoint.","type":"text/plain"},"url":{"path":["api","v1","tenants","features"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"62022ab9-2d98-4729-9a4f-cdd4bd597099","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants","features"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"package_type\": \"string\",\n  \"ai_enabled\": true,\n  \"ui_features\": {\n    \"key_0\": false,\n    \"key_1\": false\n  },\n  \"api_features\": {\n    \"key_0\": false,\n    \"key_1\": true,\n    \"key_2\": true\n  },\n  \"disabled_features\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_trial\": true,\n  \"subscription_status\": \"string\",\n  \"is_api_only\": false,\n  \"ai_available\": true,\n  \"translation_enabled\": true,\n  \"trial_suite_toggle_eligible\": false,\n  \"original_suite_type\": \"string\",\n  \"pro_trial_active\": false,\n  \"pro_trial_ends_at\": \"string\",\n  \"pro_trial_prompt_due\": false,\n  \"pro_trial_eligible\": false,\n  \"pricing_model\": {\n    \"key_0\": \"string\",\n    \"key_1\": 1443.4777215088313,\n    \"key_2\": 7291.188356595047\n  },\n  \"summarize_on_close_available\": false\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"87a51b43-29d6-4822-abff-388d6004f66d","name":"Get My Retention","request":{"name":"Get My Retention","description":{"content":"Get the current data retention policy and values for the caller's tenant.\n\nMessage retention: the stored ``message_retention_days`` (0 = unlimited),\nthe plan's presets (``allowed_options``), ``floor`` (30 on API Only, else\n90) and ``ceiling``, whether the plan is API-only, and the\n``effective_days`` the nightly purge enforces.\n\nInactive contacts: ``contact_retention_days`` (0 = never), the\n``contact_effective_days`` the purge uses (null = never) and the allowed\nrange ``contact_floor``..``contact_max`` (not limited by the plan). Both\ndescribe the ACTIVE rule. A stricter rule that is still in its 7-day wait\nis in ``contact_retention_pending_days`` and applies at\n``contact_retention_pending_effective_at`` (ISO-8601 UTC).\n``can_tighten_contact_retention`` says whether the caller may switch the\nrule on or shorten it (workspace Owner/Admin with ``contacts:delete``,\nnever an API token or connected app).\n\nMessages have the same 7-day wait: ``message_retention_days`` and\n``effective_days`` describe the ACTIVE rule, a stricter one still waiting\nis in ``message_retention_pending_days`` / ``message_retention_pending_effective_at``,\nand ``can_tighten_message_retention`` says whether the caller may switch\nmessage deletion on or shorten it (Owner/Admin with ``messages:delete``).\n\n**Required Scopes:** `settings:read`","type":"text/plain"},"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"23cca0d0-02d3-4e9c-b53b-a0c7d06bd760","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tenant_id\": \"string\",\n  \"message_retention_days\": 6215,\n  \"floor\": 5493,\n  \"ceiling\": 4635,\n  \"is_api_only\": true,\n  \"is_configurable\": false,\n  \"allowed_options\": [\n    701,\n    2499\n  ],\n  \"effective_days\": 292,\n  \"contact_retention_days\": 0,\n  \"contact_effective_days\": 7257,\n  \"contact_floor\": 90,\n  \"contact_max\": 3650,\n  \"contact_is_configurable\": true,\n  \"contact_retention_pending_days\": 7194,\n  \"contact_retention_pending_effective_at\": \"string\",\n  \"contact_retention_grace_days\": 7,\n  \"can_tighten_contact_retention\": false,\n  \"message_retention_pending_days\": 365,\n  \"message_retention_pending_effective_at\": \"string\",\n  \"message_retention_grace_days\": 7,\n  \"can_tighten_message_retention\": false\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"60319ac9-5e66-415c-9cbc-61871ecd6cca","name":"Update My Retention","request":{"name":"Update My Retention","description":{"content":"Set the retention periods (in days) for the caller's tenant.\n\nSend ``message_retention_days`` and/or ``contact_retention_days`` (at least\none, otherwise 422). Both values are validated before either is written.\n\n``message_retention_days`` must be one of the plan's presets\n(``allowed_options`` in GET): API Only 30, 60 or 90; unlimited plans 90,\n180, 365, 730, 1095, 1825, 3650 or 0 (never); a finite cap > 90 the ladder\nvalues below the cap plus the cap. Anything else is HTTP 400 (0 on a capped\nplan too). Re-sending the current value (active or waiting) is accepted\nas-is, so an older value outside the presets keeps working until changed.\n\nMessage retention is compared with the ACTIVE rule by the period chosen\n(0 = never = longest; below the plan floor counts as the floor), so a value is stricter when\nit is shorter than the active choice, whatever the plan cap. On a plan\nwith a cap, choosing any period (even the cap) while the rule is 0 is\nswitching deletion on. A stricter value (switching on, or\nshortening) needs a workspace Owner or Admin holding ``messages:delete``\nsigned in to the app (HTTP 403 otherwise), waits 7 days\n(``message_retention_pending_*``) and every workspace Owner is emailed.\nOff (0), longer, or the active value again applies immediately and\ncancels a waiting change.\n\n``contact_retention_days`` deletes contacts (and their conversations) with\nno message in either direction for that many days: 0 (never) or 90..3650,\non every plan. It is compared with the ACTIVE rule:\n\n* Stricter (switching on, or shortening): only a workspace Owner or Admin\n  holding ``contacts:delete`` may do it, never an API token or connected\n  app (HTTP 403). The new rule waits 7 days\n  (``contact_retention_pending_*`` in the response) and every workspace\n  Owner is emailed. Shortening a rule that is already waiting restarts\n  the 7 days; loosening it keeps the original date.\n* Off (0), longer, or the active value again (undo): applies immediately\n  and cancels any waiting change.\n\nReturns HTTP 400 with a clear message if a value is out of bounds.\n\n**Required Scopes:** `settings:update` (plus Owner/Admin and\n`messages:delete` to switch on or shorten message deletion, or\n`contacts:delete` for inactive-contact deletion)","type":"text/plain"},"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"465baefc-2622-40ec-92a9-2241e12fb40f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tenant_id\": \"string\",\n  \"message_retention_days\": 6215,\n  \"floor\": 5493,\n  \"ceiling\": 4635,\n  \"is_api_only\": true,\n  \"is_configurable\": false,\n  \"allowed_options\": [\n    701,\n    2499\n  ],\n  \"effective_days\": 292,\n  \"contact_retention_days\": 0,\n  \"contact_effective_days\": 7257,\n  \"contact_floor\": 90,\n  \"contact_max\": 3650,\n  \"contact_is_configurable\": true,\n  \"contact_retention_pending_days\": 7194,\n  \"contact_retention_pending_effective_at\": \"string\",\n  \"contact_retention_grace_days\": 7,\n  \"can_tighten_contact_retention\": false,\n  \"message_retention_pending_days\": 365,\n  \"message_retention_pending_effective_at\": \"string\",\n  \"message_retention_grace_days\": 7,\n  \"can_tighten_message_retention\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bfde57e3-1b43-425e-be14-a7960293565a","name":"A value is out of bounds for the plan or the allowed range.","originalRequest":{"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"PUT","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"status":"Bad Request","code":400,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"2fec4ac1-2d40-4240-b536-16ab032726f7","name":"Switching on or shortening automatic deletion of inactive contacts requires a workspace owner or admin with `contacts:delete`, signed in to the app. API tokens and connected apps get 403 for that change; switching it off or choosing a longer period is allowed.","originalRequest":{"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"PUT","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"status":"Forbidden","code":403,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"493da3f0-1ca7-4fcc-b701-b61fa2e5b13f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants","me","retention"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2e19d5d5-1da2-4625-9716-58bb097d6273","name":"Preview My Retention","request":{"name":"Preview My Retention","description":{"content":"Preview what saving the proposed retention values would delete.\n\nSame body as ``PUT /tenants/me/retention`` (an omitted field keeps its\ncurrent value) and the same validation (400 on an invalid value). Counts\nthe messages, inactive contacts and conversations the nightly purge would\ndelete under the proposed values. Read-only: nothing is saved or deleted.\n``counts_capped`` = true means the counts stopped at a limit and are lower\nbounds. ``contact_deletion_starts_at`` (ISO-8601 UTC) is set when the\nproposed contact rule is stricter than the active one: it waits 7 days\nand starts deleting then (counts show what it deletes once it starts).\n``message_deletion_starts_at`` is the same for the proposed message rule.\n\nLimited to 6 calls per minute per workspace and one running preview per\nworkspace at a time (HTTP 429 otherwise). Results are cached for up to\n60 seconds.\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","tenants","me","retention","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"be205895-1c28-4dda-b952-a85c31a4ccb0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants","me","retention","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message_effective_days\": 9732,\n  \"contact_effective_days\": 2809,\n  \"messages_to_delete\": 1940,\n  \"contacts_to_delete\": 3245,\n  \"conversations_to_delete\": 8256,\n  \"counts_capped\": false,\n  \"contact_deletion_starts_at\": \"string\",\n  \"message_deletion_starts_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3b049115-2838-4731-a977-1f3e70e62776","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants","me","retention","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"message_retention_days\": 365,\n  \"contact_retention_days\": 730\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2350d4f2-156f-4be5-8560-fc9726fb88d5","name":"Get Tenant","request":{"name":"Get Tenant","description":{"content":"Get a specific tenant (must be a member)","type":"text/plain"},"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"26676a1d-d019-421f-9489-3ff871c74736","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"is_trial\": false,\n  \"trial_ends_at\": \"1975-11-30T14:31:49.706Z\",\n  \"is_active\": true,\n  \"subscription_tier\": \"string\",\n  \"multi_agent_mode\": false,\n  \"auto_summarize_on_close\": \"string\",\n  \"auto_summarize_live_chat\": true,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"created_at\": \"1992-02-20T02:46:39.442Z\",\n  \"pricing_model_id\": \"string\",\n  \"auto_transcript_export_format\": \"none\",\n  \"live_chat_contact_visibility\": \"never\",\n  \"duplicate_contact_mode\": \"auto_merge\",\n  \"faq_generation_mode\": \"draft\",\n  \"kb_correction_mode\": \"moderated\",\n  \"kb_auto_apply_threshold\": 0.8,\n  \"faq_min_cluster_size\": 2,\n  \"bot_notification_policy\": \"always\",\n  \"brand_colors\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"logo_variants\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"logo_url\": \"string\",\n  \"dashboard_wait_threshold_normal\": 30,\n  \"dashboard_wait_threshold_urgent\": 120,\n  \"sms_enabled\": false,\n  \"rcs_enabled\": false,\n  \"flows_enabled\": false,\n  \"default_timezone\": \"UTC\",\n  \"default_country\": \"string\",\n  \"default_language\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"698622e0-3f7f-4383-bc42-63927fc9d758","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0ebb383b-4b2a-4183-b434-45d850946795","name":"Update Tenant","request":{"name":"Update Tenant","description":{"content":"Update tenant information (requires settings:update scope).\n\nThe tenant is resolved from the `X-Tenant-ID` header and the caller's\nmembership + scope are enforced by `require_scope`, mirroring the sibling\nsettings PUTs (features / channel-priority / dashboard-settings). The\n`{tenant_id}` path segment is kept for URL compatibility but is shadowed by\nthe header-resolved value.\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"company_email\": \"string\",\n  \"multi_agent_mode\": false,\n  \"auto_summarize_on_close\": \"string\",\n  \"auto_transcript_export_format\": \"string\",\n  \"auto_summarize_live_chat\": false,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"live_chat_contact_visibility\": \"string\",\n  \"duplicate_contact_mode\": \"string\",\n  \"faq_generation_mode\": \"string\",\n  \"kb_correction_mode\": \"string\",\n  \"kb_auto_apply_threshold\": 3622.782933114834,\n  \"faq_min_cluster_size\": 606,\n  \"bot_notification_policy\": \"string\",\n  \"brand_colors\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"dashboard_wait_threshold_normal\": 7612,\n  \"dashboard_wait_threshold_urgent\": 2168,\n  \"default_timezone\": \"string\",\n  \"default_country\": \"string\",\n  \"default_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"fc6fa1ec-fcbb-45a0-86bd-5b46d0508401","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"company_email\": \"string\",\n  \"multi_agent_mode\": false,\n  \"auto_summarize_on_close\": \"string\",\n  \"auto_transcript_export_format\": \"string\",\n  \"auto_summarize_live_chat\": false,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"live_chat_contact_visibility\": \"string\",\n  \"duplicate_contact_mode\": \"string\",\n  \"faq_generation_mode\": \"string\",\n  \"kb_correction_mode\": \"string\",\n  \"kb_auto_apply_threshold\": 3622.782933114834,\n  \"faq_min_cluster_size\": 606,\n  \"bot_notification_policy\": \"string\",\n  \"brand_colors\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"dashboard_wait_threshold_normal\": 7612,\n  \"dashboard_wait_threshold_urgent\": 2168,\n  \"default_timezone\": \"string\",\n  \"default_country\": \"string\",\n  \"default_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"slug\": \"string\",\n  \"billing_account_id\": \"string\",\n  \"is_trial\": false,\n  \"trial_ends_at\": \"1975-11-30T14:31:49.706Z\",\n  \"is_active\": true,\n  \"subscription_tier\": \"string\",\n  \"multi_agent_mode\": false,\n  \"auto_summarize_on_close\": \"string\",\n  \"auto_summarize_live_chat\": true,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"created_at\": \"1992-02-20T02:46:39.442Z\",\n  \"pricing_model_id\": \"string\",\n  \"auto_transcript_export_format\": \"none\",\n  \"live_chat_contact_visibility\": \"never\",\n  \"duplicate_contact_mode\": \"auto_merge\",\n  \"faq_generation_mode\": \"draft\",\n  \"kb_correction_mode\": \"moderated\",\n  \"kb_auto_apply_threshold\": 0.8,\n  \"faq_min_cluster_size\": 2,\n  \"bot_notification_policy\": \"always\",\n  \"brand_colors\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"logo_variants\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"logo_url\": \"string\",\n  \"dashboard_wait_threshold_normal\": 30,\n  \"dashboard_wait_threshold_urgent\": 120,\n  \"sms_enabled\": false,\n  \"rcs_enabled\": false,\n  \"flows_enabled\": false,\n  \"default_timezone\": \"UTC\",\n  \"default_country\": \"string\",\n  \"default_language\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a7ef7a36-13f8-430c-835b-48883c22480b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"company_email\": \"string\",\n  \"multi_agent_mode\": false,\n  \"auto_summarize_on_close\": \"string\",\n  \"auto_transcript_export_format\": \"string\",\n  \"auto_summarize_live_chat\": false,\n  \"allow_messaging_other_agents_conversations\": true,\n  \"live_chat_contact_visibility\": \"string\",\n  \"duplicate_contact_mode\": \"string\",\n  \"faq_generation_mode\": \"string\",\n  \"kb_correction_mode\": \"string\",\n  \"kb_auto_apply_threshold\": 3622.782933114834,\n  \"faq_min_cluster_size\": 606,\n  \"bot_notification_policy\": \"string\",\n  \"brand_colors\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_2\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"company_name\": \"string\",\n  \"company_domain\": \"string\",\n  \"dashboard_wait_threshold_normal\": 7612,\n  \"dashboard_wait_threshold_urgent\": 2168,\n  \"default_timezone\": \"string\",\n  \"default_country\": \"string\",\n  \"default_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"54ccd919-38a5-4a50-bc61-28d1bd9f5032","name":"Delete Tenant","request":{"name":"Delete Tenant","description":{"content":"Deactivate a tenant (requires team:delete scope - OWNER only).\n\nDeactivation also releases the tenant's channels: every channel is archived,\nand WhatsApp numbers / Facebook Pages are unsubscribed and deregistered on\nMeta where applicable, so they can be connected again in another tenant.","type":"text/plain"},"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b94e31ce-e2f6-4f8d-b0a5-612c61728d16","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"5d724d52-3b42-4604-af85-62b34874ca2b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"12843d77-975f-4399-8ad2-209c3c900beb","name":"Leave Tenant","request":{"name":"Leave Tenant","description":{"content":"Leave a tenant the user is currently a member of.\n\nSelf-service equivalent of `DELETE /users/{user_id}` — no special\nscope required because the user is acting on themselves.\n\n**Validation:**\n- 404 if the user is not a member of this tenant.\n- 400 with `\"Cannot leave: you are the sole owner. ...\"` if the\n  user is the only OWNER of the tenant.\n- 400 with `\"Cannot leave: you are the only member. ...\"` if the\n  user is the only member.\n\n**Side effects on success:**\n- The TenantUser row is hard-deleted (mirrors the admin endpoint).\n- The user's `user_notification_settings` rows for this tenant are\n  deleted and the four Redis cache keys are cleared.\n\nReturns 204 No Content on success.","type":"text/plain"},"url":{"path":["api","v1","tenants",":tenant_id","leave"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"3ea03622-3f1c-4203-8cdd-2a9d57a649ce","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id","leave"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"method":"POST","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"8d642266-005a-45e1-b782-7355654d838e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id","leave"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"550f6b50-8f7a-4caf-8c7e-cbc408417d12","name":"Get Channel Priority","request":{"name":"Get Channel Priority","description":{"content":"Get channel priority for a tenant.\n\nChannel priority is used to resolve conflicts when a contact has multiple channels\navailable (e.g., both WhatsApp and Telegram). The priority list determines which\nchannel to use for sending campaigns.","type":"text/plain"},"url":{"path":["api","v1","tenants",":tenant_id","channel-priority"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1da4b515-14cb-46f5-9fd9-a46710b9948b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id","channel-priority"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4eace9bb-7e11-4c61-b96e-8f180e71f219","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id","channel-priority"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"tenant_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"08c72596-ed9f-429b-81c7-718ff15608b6","name":"Update Channel Priority","request":{"name":"Update Channel Priority","description":{"content":"Update channel priority for a tenant (requires settings:update scope).\n\nChannel priority determines which channel to use when a contact has multiple\nchannels available. For example, if set to [\"whatsapp\", \"telegram\", \"sms\"],\ncampaigns will prefer WhatsApp, then Telegram, then SMS for contacts with\nmultiple channels.\n\nValid channel types: whatsapp, telegram, messenger, sms, instagram, viber\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","tenants",":tenant_id","channel-priority"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"channel_priority\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"40d90f06-560f-4926-a1fe-99e0fa85d4fa","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id","channel-priority"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"channel_priority\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": true,\n  \"key_1\": true,\n  \"key_2\": 544\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"783a7bd3-64b8-421d-b865-50630fe1a5ef","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","tenants",":tenant_id","channel-priority"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"channel_priority\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"48d768aa-c27d-4755-b25a-69c61da8a885","name":"Get Business Hours","request":{"name":"Get Business Hours","description":{"content":"Get the workspace business hours (weekly schedule + timezone).\n\n`configured: false` means none are set; agents then keep each rule's own times.\n\n**Required Scopes:** `settings:read` or `automation:read`","type":"text/plain"},"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"bc24b805-8b78-41a9-a544-91e59fd35a97","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"configured\": false,\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b6659b85-14dd-42f1-a88f-e7ec804abde5","name":"Put Business Hours","request":{"name":"Put Business Hours","description":{"content":"Set the workspace business hours. Agents whose activation rules use the\n\"business hours\" / \"outside business hours\" preset follow them (unless the\nagent has its own schedule).\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"key_0\": 3588,\n      \"key_1\": \"string\",\n      \"key_2\": \"string\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b3049fb6-f013-4fb2-9724-cc13e9a5f773","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"key_0\": 3588,\n      \"key_1\": \"string\",\n      \"key_2\": \"string\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"configured\": false,\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bca44b0a-c7f0-4fd3-97e8-46234471ab84","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"timezone\": \"string\",\n  \"time_ranges\": [\n    {\n      \"key_0\": 3588,\n      \"key_1\": \"string\",\n      \"key_2\": \"string\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2bdebaab-f633-46da-93e3-9f9100257165","name":"Delete Business Hours","request":{"name":"Delete Business Hours","description":{"content":"Remove the workspace business hours (back to \"not configured\").\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"902e85f7-914f-45d6-942e-00270780fb9d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","business-hours"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"56d5d9ac-be4c-456d-aa73-77e673d3aa7f","name":"Get Business Hours Usage","request":{"name":"Get Business Hours Usage","description":{"content":"List the agents that follow the workspace business hours, so a change can be\nannounced before saving: `routing` = an activation rule uses the \"business\nhours\" / \"outside business hours\" preset without the agent's own schedule;\n`handoff` = the team-availability (handoff) hours follow the workspace\nhours. Covers the live config and any unpublished draft.\n\n**Required Scopes:** `settings:read` or `automation:read`","type":"text/plain"},"url":{"path":["api","v1","settings","business-hours","usage"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d5f457fd-126e-464f-b16e-b82344afd989","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","settings","business-hours","usage"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"39bac1a9-d08d-4056-8e72-7a306a6326cd","name":"Unsubscribe","description":{"content":"Public-facing unsubscribe endpoints for one-click email and messaging opt-out.","type":"text/plain"},"item":[{"id":"7ac39a58-49cd-4e94-8be1-9e465c9ff71b","name":"List Unsubscribes","request":{"name":"List Unsubscribes","description":{"content":"List all unsubscribes for tenant (authenticated)\n\nReturns paginated list of unsubscribe events with filtering options.","type":"text/plain"},"url":{"path":["api","v1","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"campaign_id","value":"string"},{"disabled":false,"key":"email_campaign_id","value":"string"},{"disabled":false,"key":"limit","value":"50"},{"disabled":false,"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"829882d2-08b7-4a48-a2ed-0a1a9454762b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_id","value":"string"},{"key":"email_campaign_id","value":"string"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"unsubscribes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 2970,\n  \"limit\": 653,\n  \"offset\": 6695\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"31cd24e8-2d1b-4ab6-940c-2bdaf9ec7bc8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","unsubscribes"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_id","value":"string"},{"key":"email_campaign_id","value":"string"},{"key":"limit","value":"50"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"edb0902c-bae1-4e4d-8f24-cb9fee83912b","name":"Get Unsubscribe Stats","request":{"name":"Get Unsubscribe Stats","description":{"content":"Get unsubscribe statistics (authenticated)\n\nReturns aggregate statistics about unsubscribes for reporting/analytics.","type":"text/plain"},"url":{"path":["api","v1","unsubscribes","stats"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"campaign_id","value":"string"},{"disabled":false,"key":"email_campaign_id","value":"string"},{"disabled":false,"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ea4e52f7-ecf4-4bf8-a9ec-f21f43b8c88e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","unsubscribes","stats"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_id","value":"string"},{"key":"email_campaign_id","value":"string"},{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"total_unsubscribes\": 9477,\n  \"period_days\": 7032,\n  \"methods\": {\n    \"link\": 23,\n    \"one_click\": 45,\n    \"spam_complaint\": 2\n  },\n  \"unsubscribe_rate_percent\": 9045.108737083596,\n  \"campaign_id\": \"string\",\n  \"email_campaign_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4265b9e3-3210-465d-8db1-29d8bdac51f3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","unsubscribes","stats"],"host":["{{baseUrl}}"],"query":[{"key":"campaign_id","value":"string"},{"key":"email_campaign_id","value":"string"},{"key":"days","value":"30"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"630c8587-cf05-484b-a06a-1c7b581f36a5","name":"User Inbox Access","description":{"content":"Manage which team members can access specific custom inboxes.","type":"text/plain"},"item":[{"id":"a16b409e-633e-4e0f-b039-d26472a5eb86","name":"Get per-user inbox access settings","request":{"name":"Get per-user inbox access settings","description":{"content":"Get the target user's inbox-access mode + the inboxes they're listed in.\n\nReturns 200 with ``{mode: 'all', inbox_ids: []}`` for a freshly-added team\nmember who has no overrides — ``mode`` defaults to ``'all'`` (PRIMARY\nserver_default) and the SHARD grant list starts empty.\n\nReturns 404 if the target user is not a member of this tenant. We use 404\nrather than 403 to avoid leaking the existence of cross-tenant user IDs.\n\n**Required Scopes:** ``team:read``","type":"text/plain"},"url":{"path":["api","v1","users",":user_id","inbox-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"1ea9f3a4-9f92-49cf-a850-6f659f07870f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id","inbox-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"mode\": \"all\",\n  \"inbox_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"contact_history_visibility\": \"all\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e6490308-4339-4d36-82e5-ab9f1e6845d3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id","inbox-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"26d113af-3ce0-4f5f-b79f-f4d72712f935","name":"Update per-user inbox access settings","request":{"name":"Update per-user inbox access settings","description":{"content":"Update the user's mode + replace their per-inbox grants.\n\nBehaviour:\n- Validates target user is a member of this tenant (404 otherwise — using\n  404 over 403 to avoid an existence oracle).\n- Validates every ``inbox_ids`` element belongs to this tenant (422\n  otherwise).\n- Updates ``tenant_users.inbox_access_mode`` on PRIMARY.\n- Reconciles the user's rows in ``custom_inbox_users`` on SHARD to the\n  target set (delete grants no longer wanted, insert only missing ones).\n\nCross-DB write contract:\n    The mode lives on PRIMARY; the grants live on SHARD. We cannot wrap\n    both writes in a single transaction. Order is PRIMARY first, then\n    SHARD. If the SHARD write fails AFTER the PRIMARY commit, the user is\n    left with the new mode but stale grants — we log loudly and re-raise\n    so the client sees the failure (and the frontend can avoid\n    invalidating its cache, prompting the operator to retry). A retry of\n    the same PUT is idempotent because PRIMARY will already be at the\n    target value and the SHARD reconcile only touches the delta (a\n    re-grant of an already-present inbox is a no-op, not a 1062 collision).\n\n**Required Scopes:** ``team:update``","type":"text/plain"},"url":{"path":["api","v1","users",":user_id","inbox-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"all\",\n  \"inbox_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"contact_history_visibility\": \"all\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9db3d8d5-d1cc-4c3d-9422-b33c5616faeb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id","inbox-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"all\",\n  \"inbox_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"contact_history_visibility\": \"all\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"mode\": \"all\",\n  \"inbox_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"contact_history_visibility\": \"all\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8a2c517a-7abe-4650-9b39-5675ce91142a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id","inbox-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"mode\": \"all\",\n  \"inbox_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"contact_history_visibility\": \"all\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"939c53a7-c348-47d4-9968-643f7dad7487","name":"List a team member's tags","request":{"name":"List a team member's tags","description":{"content":"List the tags assigned to a team member.\n\nMember tags are used by custom inboxes with \"specific members\" access:\nmembers holding any of the inbox's access tags can see the inbox.\n\nReturns 404 if the user is not a member of this workspace.\n\n**Required Scopes:** `team:read`","type":"text/plain"},"url":{"path":["api","v1","users",":user_id","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"42e9cad1-4d79-4044-8ec3-191e611eff67","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8165d20e-9184-4919-9cc8-f2944fb3d20c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3b385558-00ed-4463-bce6-bdacd45470b1","name":"Replace a team member's tags","request":{"name":"Replace a team member's tags","description":{"content":"Replace the full set of tags assigned to a team member.\n\nSend every tag the member should hold; tags not in ``tag_ids`` are\nremoved, an empty list removes all. Re-sending the same set is a no-op.\n\n- 404 if the user is not a member of this workspace.\n- 422 if any ``tag_ids`` element is not a tag of this workspace.\n\n**Required Scopes:** `team:update`","type":"text/plain"},"url":{"path":["api","v1","users",":user_id","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"099f700d-9e52-47c5-95ad-9d97c3a8feea","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c54310b7-bc9d-4cde-802b-293fc1d40f1d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id","tags"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"tag_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"d900fd25-6905-41a8-9a02-967ee5edb310","name":"Users","description":{"content":"Manage team member profiles, preferences, chat nicknames, and notification settings.","type":"text/plain"},"item":[{"id":"f9b6c05a-f9af-4829-80a3-134fe9929f61","name":"List Team Members","request":{"name":"List Team Members","description":{"content":"List all users in the tenant with their RBAC roles.\n\nReturns a paginated list of team members with their roles and permissions.\nEach member also carries account-wide-usage access flags for the\n/settings/team access toggle: ``is_billing_account_owner`` (owner always has\nusage access → render the toggle checked+disabled) and\n``account_billing_read_granted`` (whether the member holds a direct\n``account:billing_read`` grant → checkbox state for non-owners). Both default\nFalse and are fail-closed.\n\n**Required Scopes:** `team:read`\n\n**Response format:**\n```json\n{\n    \"items\": [...],\n    \"pagination\": {\n        \"total\": 25,\n        \"page\": 1,\n        \"page_size\": 20,\n        \"total_pages\": 2,\n        \"has_next\": true,\n        \"has_prev\": false\n    }\n}\n```","type":"text/plain"},"url":{"path":["api","v1","users"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number (1-indexed)"},{"disabled":false,"key":"page_size","value":"20","description":"Items per page"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"993e7ce2-9e70-437c-bb1b-0fbd262d4451","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5bbe254f-bea4-4ed7-972b-65d2a76a1d8a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ddec9591-0550-435c-bbd3-dafd6d70f7c3","name":"Set Account Billing Access","request":{"name":"Set Account Billing Access","description":{"content":"Grant or revoke account-wide usage access for a team member.\n\nIdempotently grants (``enabled=true``) or revokes (``enabled=false``) a\nDIRECT ``account:billing_read`` scope on the target user within the current\nworkspace. This is the backing endpoint for the \"Can view account-wide usage\"\ncheckbox on /settings/team.\n\nOWNER-ONLY: only the OWNER of the billing account that owns the current\nworkspace may toggle this — enforced by the same Part B owner-guard used on\nevery ``account:billing_read`` grant path\n(``_enforce_owner_for_account_billing_scope``). The billing account is always\nderived server-side from the authenticated tenant; never caller-supplied.\nFail-closed: a non-owner (or any missing row) gets 403.\n\n**Required Scopes:** `team:admin` (AND billing-account ownership)","type":"text/plain"},"url":{"path":["api","v1","users",":user_id","account-billing-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3ad67d22-fc43-424e-8996-aabacfebee7a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id","account-billing-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"user_id\": \"string\",\n  \"account_billing_read_enabled\": false\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"40384ed3-292a-42a3-b4d7-9be003647671","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id","account-billing-access"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"enabled\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cbc11501-916e-449a-9dbc-2160a6fbea97","name":"Get Current User Profile","request":{"name":"Get Current User Profile","description":{"content":"Get current user's profile with optional tenant context.\n\nIf X-Tenant-ID header is provided, includes:\n- User's role in that tenant\n- Tenant's multi_agent_mode setting\n\n**Authentication:** Required (no specific scope needed)","type":"text/plain"},"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f79568d7-7219-4e83-b389-506c70ad13a5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1951-04-13T18:12:13.568Z\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true,\n  \"personal_phone\": \"string\",\n  \"light_theme\": \"sendseven-light\",\n  \"dark_theme\": \"sendseven-dark\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": false,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"aup_accepted_at\": \"1952-10-08T20:44:07.211Z\",\n  \"aup_version\": \"string\",\n  \"tenant_id\": \"string\",\n  \"role\": \"string\",\n  \"tenant_multi_agent_mode\": false,\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": true,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a8f99fd3-ec99-4e61-92bf-012f7983eeb6","name":"Delete my account","request":{"name":"Delete my account","description":{"content":"Permanently delete the authenticated user's own account.\n\nThis is irreversible. It removes the login identity (you will be signed\nout everywhere and cannot sign in again), the profile (name, avatar,\nphone, preferences), API sessions and OAuth grants, and detaches the user\nfrom every workspace they are a member of. Workspaces, billing accounts,\nconversations and contacts belong to the organisation and are **not**\ndeleted — only the person's membership is removed.\n\n**Refused with 409** while the user is the **sole owner** or the **sole\nmember** of any workspace (tenant) or billing account: promote another\nowner first, or delete the workspace / cancel the billing account. The\nresponse body lists the blocking workspaces / billing accounts as\n`{\"blockers\": [{\"type\", \"id\", \"name\", \"reason\"}]}` with `reason` one of\n`sole_owner`, `sole_member`, `platform_admin`.\n\nReturns `{\"success\": true, \"id\": \"<user_id>\"}`.\n\n**Authentication:** Required (no specific scope — the user acts on themselves)","type":"text/plain"},"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"4ad2140a-777b-4a75-8602-61a4c35365a4","name":"Account permanently deleted","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"25be4f0b-428f-45fb-8333-f3c5b35a0407","name":"Current user not found","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"DELETE","body":{}},"status":"Not Found","code":404,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"5b203cda-7129-424c-b764-7b934f0f4234","name":"Blocked: sole owner / sole member of a workspace or billing account","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"DELETE","body":{}},"status":"Conflict","code":409,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"e21bc8ad-f4f1-4fa9-9dad-d58bca01e937","name":"Identity provider refused the deletion; nothing was deleted","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"method":"DELETE","body":{}},"status":"Bad Gateway","code":502,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4d5fef0d-77db-4219-89f7-5ff86083f887","name":"Update Current User","request":{"name":"Update Current User","description":{"content":"Update current user's profile (alias for /users/me/profile).\n\nThis endpoint accepts the same request body as /users/me/profile.\nBoth endpoints are equivalent and provided for API convenience.\n\nUpdatable fields:\n- `display_name`: User-editable name (takes precedence over Auth0 name in UI)\n- `chat_nickname`: Display name in chat\n- `live_chat_available`: Availability for live chat assignment\n- `personal_phone`: Personal phone for receiving SMS/WhatsApp notifications (user-global)\n- `preferred_language`: UI language code (en, de, fr, es, pt, it, ru, hr, tr, ar)\n- `auto_translate_enabled`: Enable automatic translation of incoming messages (user-global)\n- `shoutbox_hidden`: Hide/deactivate the team-chat Shoutbox widget across all devices (user-global)\n- `spoken_languages`: Comma-separated ISO 639-1 codes the user speaks, e.g. \"de,en\" (user-global; empty string clears)\n- `phone`: Agent's phone number for email signatures (per-tenant, requires X-Tenant-ID header)\n- `title`: Agent's job title for email signatures (per-tenant, requires X-Tenant-ID header)\n\n**Authentication:** Required (no specific scope needed)","type":"text/plain"},"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": false,\n  \"personal_phone\": \"string\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": true,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": false,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"be76f6eb-7342-4085-bde9-a22e822a4532","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": false,\n  \"personal_phone\": \"string\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": true,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": false,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1951-04-13T18:12:13.568Z\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true,\n  \"personal_phone\": \"string\",\n  \"light_theme\": \"sendseven-light\",\n  \"dark_theme\": \"sendseven-dark\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": false,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"aup_accepted_at\": \"1952-10-08T20:44:07.211Z\",\n  \"aup_version\": \"string\",\n  \"tenant_id\": \"string\",\n  \"role\": \"string\",\n  \"tenant_multi_agent_mode\": false,\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": true,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ce36ec0c-5d17-4ca9-a852-af76c0d28b28","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users","me"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": false,\n  \"personal_phone\": \"string\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": true,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": false,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2e4da1d6-17da-4b09-bc58-a3bcd2e56af9","name":"Update Current User Profile","request":{"name":"Update Current User Profile","description":{"content":"Update current user's profile.\n\nUpdatable fields:\n- `display_name`: User-editable name (takes precedence over Auth0 name in UI)\n- `chat_nickname`: Display name in chat\n- `live_chat_available`: Availability for live chat assignment\n- `personal_phone`: Personal phone for receiving SMS/WhatsApp notifications (user-global)\n- `preferred_language`: UI language code (en, de, fr, es, pt, it, ru, hr, tr, ar)\n- `auto_translate_enabled`: Enable automatic translation of incoming messages (user-global)\n- `shoutbox_hidden`: Hide/deactivate the team-chat Shoutbox widget across all devices (user-global)\n- `spoken_languages`: Comma-separated ISO 639-1 codes the user speaks, e.g. \"de,en\" (user-global; empty string clears)\n- `phone`: Agent's phone number for email signatures (per-tenant, requires X-Tenant-ID header)\n- `title`: Agent's job title for email signatures (per-tenant, requires X-Tenant-ID header)\n\n**Authentication:** Required (no specific scope needed)","type":"text/plain"},"url":{"path":["api","v1","users","me","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": false,\n  \"personal_phone\": \"string\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": true,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": false,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"70ed83d4-6928-465c-b54c-96854ff895c5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","me","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": false,\n  \"personal_phone\": \"string\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": true,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": false,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1951-04-13T18:12:13.568Z\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true,\n  \"personal_phone\": \"string\",\n  \"light_theme\": \"sendseven-light\",\n  \"dark_theme\": \"sendseven-dark\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": false,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"aup_accepted_at\": \"1952-10-08T20:44:07.211Z\",\n  \"aup_version\": \"string\",\n  \"tenant_id\": \"string\",\n  \"role\": \"string\",\n  \"tenant_multi_agent_mode\": false,\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": true,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7fc44436-1413-44ae-aeba-9aa4d0452059","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users","me","profile"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": false,\n  \"personal_phone\": \"string\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": true,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": false,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"85d82a0a-2b2e-412d-a976-f5e1439ef7b0","name":"Get User Tenants","request":{"name":"Get User Tenants","description":{"content":"Get all tenants the current user belongs to.\n\nReturns a list of tenants (role field will use RBAC primary role).\n\n**Authentication:** Required (no specific scope needed)","type":"text/plain"},"url":{"path":["api","v1","users","me","tenants"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9685ca71-de6e-46aa-9173-cd7dbc385d01","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","me","tenants"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"role\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"joined_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"slug\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_trial\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"trial_ends_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"billing_account_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_country\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"role\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"joined_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"slug\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_trial\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"trial_ends_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"billing_account_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_country\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"default_timezone\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"be14251b-c09d-4b28-9f59-7cfd162354cb","name":"Upload User Avatar","request":{"name":"Upload User Avatar","description":{"content":"Upload a profile avatar image for the current user.\n\nReplaces any existing avatar. The uploaded image is stored in GCP Cloud\nStorage and served via a public proxy endpoint.\n\n**Constraints:**\n- File type: PNG, JPG, JPEG\n- Max size: 2MB\n\n**Authentication:** Required (no specific scope needed)","type":"text/plain"},"url":{"path":["api","v1","users","me","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"file","type":"file","description":"(Required) Avatar image file (PNG/JPG, max 2MB)"}]}},"response":[{"id":"c78665b3-665a-41a8-8bdf-df7cdb5cd904","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","me","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) Avatar image file (PNG/JPG, max 2MB)","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"email\": \"string\",\n  \"name\": \"string\",\n  \"created_at\": \"1951-04-13T18:12:13.568Z\",\n  \"display_name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true,\n  \"personal_phone\": \"string\",\n  \"light_theme\": \"sendseven-light\",\n  \"dark_theme\": \"sendseven-dark\",\n  \"preferred_language\": \"string\",\n  \"preferred_translation_language\": \"string\",\n  \"auto_translate_enabled\": false,\n  \"shoutbox_hidden\": false,\n  \"spoken_languages\": \"string\",\n  \"aup_accepted_at\": \"1952-10-08T20:44:07.211Z\",\n  \"aup_version\": \"string\",\n  \"tenant_id\": \"string\",\n  \"role\": \"string\",\n  \"tenant_multi_agent_mode\": false,\n  \"phone\": \"string\",\n  \"title\": \"string\",\n  \"email_auto_signature_enabled\": true,\n  \"email_auto_signature_on_replies\": true,\n  \"email_auto_signature_on_new\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"dbab3ecc-a1b2-4938-a554-784ac6195e68","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users","me","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) Avatar image file (PNG/JPG, max 2MB)","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9e3b0be0-7704-4f7c-858d-65396b4aeff6","name":"Delete User Avatar","request":{"name":"Delete User Avatar","description":{"content":"Remove the current user's custom avatar.\n\nSets the user's profile picture to None.\n\n**Authentication:** Required (no specific scope needed)","type":"text/plain"},"url":{"path":["api","v1","users","me","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"47c475d3-f041-49c4-b512-c4884c1f5c98","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","me","avatar"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"b363126c-0241-4094-9591-c3950b87262c","name":"Invite User","request":{"name":"Invite User","description":{"content":"Invite a user to join the tenant.\n\nCreates a user record with pending Auth0 ID. The user can then log in\nvia Auth0 using the invited email address.\n\nWhen ``role_id`` is supplied, the invited user is assigned that RBAC role.\nThis accepts BOTH system roles AND this tenant's own custom roles (the same\nids returned by ``GET /roles``). The inviter may only assign a role whose\nscopes they themselves possess, and only ``team:admin`` holders may assign\nsystem roles -- identical to the ``POST /permissions/users/{id}/roles`` path.\n\n**Required Scopes:** `team:create`\n\nNote: Only OWNER and ADMIN roles can invite users (enforced by scope).","type":"text/plain"},"url":{"path":["api","v1","users","invite"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"bF2xy@PnuIMkZORgoFQWzc.bzho\",\n  \"name\": \"string\",\n  \"role_id\": \"string\",\n  \"role\": \"agent\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"90a54441-7f4c-4441-924a-3766681394c2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users","invite"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"bF2xy@PnuIMkZORgoFQWzc.bzho\",\n  \"name\": \"string\",\n  \"role_id\": \"string\",\n  \"role\": \"agent\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"email\": \"john@example.com\",\n  \"message\": \"User invited successfully\",\n  \"note\": \"User can now log in via Auth0 using this email\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7f3baaaa-2bd0-4860-865f-7edaa600fc60","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users","invite"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"email\": \"bF2xy@PnuIMkZORgoFQWzc.bzho\",\n  \"name\": \"string\",\n  \"role_id\": \"string\",\n  \"role\": \"agent\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6854ff2d-b678-4463-aa3c-3d4156397c5d","name":"Get User","request":{"name":"Get User","description":{"content":"Get user details by ID.\n\nUser must be a member of the current tenant.\n\n**Required Scopes:** `team:read`","type":"text/plain"},"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0f97a7c4-5d44-4084-a079-6e600d55ecf2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"email\": \"string\",\n  \"name\": \"string\",\n  \"updated_at\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2512289e-5520-4341-a0da-41d289d73d1d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6a7f3f6a-8dd7-4fe3-831d-22948122b0f8","name":"Update User","request":{"name":"Update User","description":{"content":"Update user profile.\n\nUsers can only update their own profile.\n\n**Required Scopes:** `team:update`","type":"text/plain"},"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"499c99b4-7b0f-4dc5-b978-9e98ddb33631","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"created_at\": \"string\",\n  \"id\": \"string\",\n  \"email\": \"string\",\n  \"name\": \"string\",\n  \"updated_at\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ccefb2ba-ac43-4719-b9f0-d315955ad5b5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"avatar_url\": \"string\",\n  \"chat_nickname\": \"string\",\n  \"live_chat_available\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"751c50bf-f9eb-4a58-a905-3e38a7c1baf3","name":"Remove User From Tenant","request":{"name":"Remove User From Tenant","description":{"content":"Remove user from tenant.\n\nOnly OWNER and ADMIN roles can remove users.\nOnly OWNER can remove another OWNER.\nUsers cannot remove themselves.\n\n**Required Scopes:** `team:delete`","type":"text/plain"},"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b4d3458a-1653-420d-8d19-f8dfc88611f0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"2f406228-244b-4b98-a418-b3e51d1a6c26","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"30f262bc-7acd-433d-85a5-c1241ad11885","name":"Update User Role","request":{"name":"Update User Role","description":{"content":"Update user's role in the tenant.\n\nOnly OWNER and ADMIN roles can update user roles.\nOnly OWNER can change another OWNER's role.\n\n**Required Scopes:** `team:update`","type":"text/plain"},"url":{"path":["api","v1","users",":user_id","role"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"role\": \"agent\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c7272adf-bdfc-4117-a3e0-d6035765be15","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","users",":user_id","role"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"role\": \"agent\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"message\": \"Role updated successfully\",\n  \"new_role\": \"ADMIN\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"054a714e-79c7-423d-92fc-b2eccedaab44","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","users",":user_id","role"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"user_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"role\": \"agent\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"70b29d0d-de9a-403e-9106-743d11ac27a2","name":"Webhooks","description":{"content":"Configure HTTPS webhook endpoints to receive real-time event notifications (messages, conversations, contacts).","type":"text/plain"},"item":[{"id":"831eb547-048d-4eee-b06f-2036c2f07a00","name":"Get Available Events","request":{"name":"Get Available Events","description":{"content":"Get list of available webhook event types.\n\n**Required Scopes:** `webhooks:read`\n\nReturns all event types that can be subscribed to along with descriptions\nand categories.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints","available-events"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"86ef9a8f-1c83-4ebf-9b6b-03f593751fcf","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints","available-events"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"events\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"categories\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"12018497-6759-413d-8f76-0c628854c157","name":"List Webhook Endpoints","request":{"name":"List Webhook Endpoints","description":{"content":"List all webhook endpoints for the tenant.\n\n**Required Scopes:** `webhooks:read`","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f2bb3905-7cbd-494f-a322-b633c9924fc5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_authorization_header\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subscribed_events\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"retry_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_retries\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timeout_seconds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_filter_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filtered_channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filtered_email_integration_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verification_method\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_success_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_failure_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"consecutive_failures\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"suspended_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_reactivation_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"reactivation_pending_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"incident_started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"queued_events_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"queued_events_dropped\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_authorization_header\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subscribed_events\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_verified\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"retry_strategy\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_retries\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"timeout_seconds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_filter_mode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filtered_channel_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"filtered_email_integration_ids\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verification_method\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_success_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_failure_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"last_error\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"consecutive_failures\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"suspended_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_reactivation_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"reactivation_pending_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"incident_started_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"queued_events_count\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"queued_events_dropped\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_by\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"49c2b4ff-808d-45eb-bcbe-d2c4dfae01a4","name":"Create Webhook Endpoint","request":{"name":"Create Webhook Endpoint","description":{"content":"Create a new webhook endpoint.\n\n**Required Scopes:** `webhooks:create`\n\nCreates a webhook endpoint and returns the secret key for HMAC verification.\n**Important:** The secret key is shown only once - store it securely!\n\nAfter creation, a verification challenge is automatically sent.\nThe webhook must respond correctly to become active.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"CRM Message Sync\",\n  \"url\": \"https://api.mycrm.com/webhooks/sendseven\",\n  \"authorization_header\": \"Bearer sk_live_abc123xyz\",\n  \"subscribed_events\": [\n    \"message.received\",\n    \"message.sent\",\n    \"message.delivered\",\n    \"message.read\",\n    \"message.failed\"\n  ],\n  \"retry_strategy\": \"exponential\",\n  \"max_retries\": 8,\n  \"timeout_seconds\": 30\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7a7f430d-34ca-425b-9642-502c883a80a5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"CRM Message Sync\",\n  \"url\": \"https://api.mycrm.com/webhooks/sendseven\",\n  \"authorization_header\": \"Bearer sk_live_abc123xyz\",\n  \"subscribed_events\": [\n    \"message.received\",\n    \"message.sent\",\n    \"message.delivered\",\n    \"message.read\",\n    \"message.failed\"\n  ],\n  \"retry_strategy\": \"exponential\",\n  \"max_retries\": 8,\n  \"timeout_seconds\": 30\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"webhook_id\": \"string\",\n  \"secret_key\": \"string\",\n  \"message\": \"Store this secret key securely. It will not be shown again.\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"446ae5f5-d189-4ebc-a51a-8f66e033e136","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"CRM Message Sync\",\n  \"url\": \"https://api.mycrm.com/webhooks/sendseven\",\n  \"authorization_header\": \"Bearer sk_live_abc123xyz\",\n  \"subscribed_events\": [\n    \"message.received\",\n    \"message.sent\",\n    \"message.delivered\",\n    \"message.read\",\n    \"message.failed\"\n  ],\n  \"retry_strategy\": \"exponential\",\n  \"max_retries\": 8,\n  \"timeout_seconds\": 30\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"525cf413-647a-4fbe-b05b-5ff43905770a","name":"Get Webhook Endpoint","request":{"name":"Get Webhook Endpoint","description":{"content":"Get a specific webhook endpoint.\n\n**Required Scopes:** `webhooks:read`","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"75274404-1bfb-4fa4-8468-60408945ae06","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"has_authorization_header\": true,\n  \"subscribed_events\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_active\": true,\n  \"is_verified\": true,\n  \"retry_strategy\": \"linear\",\n  \"max_retries\": 2946,\n  \"timeout_seconds\": 2964,\n  \"created_at\": \"string\",\n  \"source_filter_mode\": \"all\",\n  \"filtered_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"filtered_email_integration_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"verification_method\": \"challenge\",\n  \"last_success_at\": \"string\",\n  \"last_failure_at\": \"string\",\n  \"last_error\": \"string\",\n  \"consecutive_failures\": 0,\n  \"suspended_at\": \"string\",\n  \"next_reactivation_at\": \"string\",\n  \"reactivation_pending_at\": \"string\",\n  \"incident_started_at\": \"string\",\n  \"queued_events_count\": 5138,\n  \"queued_events_dropped\": 0,\n  \"updated_at\": \"string\",\n  \"created_by\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"40681ec3-387d-49e5-b166-b8331b400fb4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0b5e7c1e-e85d-4aa0-a68b-b4c52fe5692b","name":"Update Webhook Endpoint","request":{"name":"Update Webhook Endpoint","description":{"content":"Update a webhook endpoint.\n\n**Required Scopes:** `webhooks:update`\n\nNote: If the URL is changed, the webhook must be re-verified.\n\nWebhooks managed by an OAuth integration (`verification_method='oauth_app'`,\ne.g. Zapier) have an immutable `url` and `subscribed_events`: attempting to\nchange either returns 403. Those endpoints were auto-verified on the OAuth\ngrant with no echo-challenge, so re-pointing the url here is disallowed —\nthe integration must delete + recreate instead. Other fields (name, active\ntoggle, retry/timeout, source filters, auth header) remain editable.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"authorization_header\": \"string\",\n  \"subscribed_events\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": false,\n  \"retry_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_retries\": 10,\n  \"timeout_seconds\": 6,\n  \"source_filter_mode\": \"all\",\n  \"filtered_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"filtered_email_integration_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"bc9d35ef-6557-411c-ba1d-bda06365afe7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"authorization_header\": \"string\",\n  \"subscribed_events\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": false,\n  \"retry_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_retries\": 8,\n  \"timeout_seconds\": 25,\n  \"source_filter_mode\": \"selected\",\n  \"filtered_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"filtered_email_integration_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"has_authorization_header\": true,\n  \"subscribed_events\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_active\": true,\n  \"is_verified\": true,\n  \"retry_strategy\": \"linear\",\n  \"max_retries\": 2946,\n  \"timeout_seconds\": 2964,\n  \"created_at\": \"string\",\n  \"source_filter_mode\": \"all\",\n  \"filtered_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"filtered_email_integration_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"verification_method\": \"challenge\",\n  \"last_success_at\": \"string\",\n  \"last_failure_at\": \"string\",\n  \"last_error\": \"string\",\n  \"consecutive_failures\": 0,\n  \"suspended_at\": \"string\",\n  \"next_reactivation_at\": \"string\",\n  \"reactivation_pending_at\": \"string\",\n  \"incident_started_at\": \"string\",\n  \"queued_events_count\": 5138,\n  \"queued_events_dropped\": 0,\n  \"updated_at\": \"string\",\n  \"created_by\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fa13c886-5b52-403b-8c5c-ded983377826","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"authorization_header\": \"string\",\n  \"subscribed_events\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_active\": false,\n  \"retry_strategy\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"max_retries\": 8,\n  \"timeout_seconds\": 25,\n  \"source_filter_mode\": \"selected\",\n  \"filtered_channel_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"filtered_email_integration_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0e58fe6e-2b4d-450d-ba45-65834b89747a","name":"Delete Webhook Endpoint","request":{"name":"Delete Webhook Endpoint","description":{"content":"Delete a webhook endpoint.\n\n**Required Scopes:** `webhooks:delete`\n\nThis also deletes all associated delivery history.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"993c2f21-6e46-4886-b341-7458a3ae06ca","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"24d8ec83-060f-4fa8-8635-95986ed888d7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"52e889ab-122f-4bca-bd1c-7145e5a818ee","name":"Verify Webhook Endpoint","request":{"name":"Verify Webhook Endpoint","description":{"content":"Re-trigger webhook verification.\n\n**Required Scopes:** `webhooks:update`\n\nSends a verification challenge to the webhook URL.\nThe endpoint must respond with the challenge to become verified and active.\n\nManual reactivation: if the endpoint was SUSPENDED by the circuit breaker\nand verification succeeds, the suspension is lifted into PROBATION — the\nqueued event backlog is replayed in order immediately, but the endpoint is\nonly counted as recovered (and the \"reactivated\" email only sent) once a\nreal delivery actually succeeds. If the next real delivery fails, the\nendpoint goes straight back to suspended. Identical to a successful\nautomatic reactivation attempt.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"073f7399-dec4-41b0-b0b3-79f252ba5ca4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"is_verified\": false,\n  \"message\": \"Verification challenge sent. Respond within 5 minutes.\",\n  \"verification_expires_at\": \"2025-12-11T10:05:00Z\",\n  \"verification_pending\": true,\n  \"webhook_id\": \"wh_abc123\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d059e66c-c2c4-4ceb-a3b4-2deed0a0dcd1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","verify"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"724d1453-3e49-496d-aa65-b5cfd77815af","name":"Send Test Webhook","request":{"name":"Send Test Webhook","description":{"content":"Send a test webhook event.\n\n**Required Scopes:** `webhooks:update`\n\nSends a test event to the webhook endpoint with sample data.\nThe webhook must be verified to receive test events.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"30198120-2508-458e-86a0-edd1ee58dfcd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"delivery_id\": \"string\",\n  \"message\": \"string\",\n  \"response_status_code\": 2121,\n  \"response_time_ms\": 6828,\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6eed9200-e4de-49bb-b675-9c81c0b4daa1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"event_type\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3e930048-122f-4b9c-b362-cb984d497e32","name":"Get Webhook Deliveries","request":{"name":"Get Webhook Deliveries","description":{"content":"Get delivery history for a webhook endpoint.\n\n**Required Scopes:** `webhooks:read`\n\nReturns paginated list of webhook deliveries with request/response details.\n\nUse the `status` filter to find deliveries that can be retried:\n- `failed` - Deliveries that failed and exhausted retries\n- `dead_letter` - Deliveries moved to dead letter queue\n\nBoth `failed` and `dead_letter` deliveries can be manually retried.\n\n`queued` deliveries are events stored while the endpoint was suspended.\nThey are replayed automatically on reactivation, so they are never\nmanually retriable (`can_retry` is false).","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id","deliveries"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1","description":"Page number"},{"disabled":false,"key":"page_size","value":"50","description":"Items per page"},{"disabled":false,"key":"status","value":"string","description":"Filter by delivery status (pending, success, failed, retrying, dead_letter, queued)"},{"disabled":false,"key":"event_type","value":"string","description":"Filter by event type (e.g. message.sent, message.received, conversation.created)"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"cda62124-b05d-4b3c-b284-8871fac7fcf9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"status","value":"string"},{"key":"event_type","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 768,\n  \"page\": 1385,\n  \"page_size\": 4961,\n  \"has_more\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"21bb9942-85be-4c81-b742-016d99cfb950","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","deliveries"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"},{"key":"status","value":"string"},{"key":"event_type","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7ba11e41-7f63-44d4-a7ed-de29bdfe397b","name":"Regenerate Webhook Secret","request":{"name":"Regenerate Webhook Secret","description":{"content":"Regenerate the webhook secret key.\n\n**Required Scopes:** `webhooks:update`\n\nGenerates a new secret key for HMAC signature verification.\n**Important:** The new secret key is shown only once - store it securely!\n\nYou will need to update your webhook consumer with the new secret.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id","regenerate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"e169d09a-8dfa-4853-afb3-5a93a7e71da3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","regenerate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"webhook_id\": \"string\",\n  \"secret_key\": \"string\",\n  \"message\": \"Store this secret key securely. It will not be shown again.\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"706cbc42-f147-4f21-8f19-7919279ad629","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","regenerate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3cbfa732-5503-4619-a4ec-82123668e710","name":"Retry Webhook Delivery","request":{"name":"Retry Webhook Delivery","description":{"content":"Manually retry a failed or dead_letter webhook delivery.\n\n**Required Scopes:** `webhooks:update`\n\nRe-queues a failed delivery for immediate sending. This creates a new\ndelivery record and publishes it to the webhooks queue for processing.\n\nCan only retry deliveries with status 'failed' or 'dead_letter'.","type":"text/plain"},"url":{"path":["api","v1","webhook-endpoints",":webhook_id","deliveries",":delivery_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"delivery_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"4feae714-b185-46c6-a935-0ec99d06347e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","deliveries",":delivery_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"delivery_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"delivery_id\": \"del_new123\",\n  \"message\": \"Delivery queued for retry\",\n  \"previous_delivery_id\": \"del_old456\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1bb6d3de-de51-45fa-a0cd-7b5bfc5ff5cd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","webhook-endpoints",":webhook_id","deliveries",":delivery_id","retry"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"webhook_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"delivery_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"2c54a726-d845-4696-b695-e2859438de0d","name":"WhatsApp","description":{"content":"WhatsApp Business API management including business profile, phone number settings, and platform-specific features.","type":"text/plain"},"item":[{"id":"cc16bb41-6d19-4333-bfde-25ddff31296e","name":"Get Whatsapp Window Status","request":{"name":"Get Whatsapp Window Status","description":{"content":"Get WhatsApp messaging window status for a conversation\n\nWhatsApp Business API restricts sending free-form messages outside a window\nafter the last customer message. This endpoint returns the current window\nstatus so the UI can gate free-form vs template composition.\n\n**Two window kinds:**\n- `customer_service` (default): standard **24-hour** window measured from the\n  last inbound customer message. Once expired only template messages may be\n  sent (`requires_template` true).\n- `free_entry_point`: a **72-hour** Free Entry Point (FEP) window for\n  Click-to-WhatsApp / Page-CTA conversations (flagged at ingestion via\n  `custom_data.ctwa.is_free_entry_point`). Per Meta, the FEP conversation\n  \"is opened as soon as your reply message is delivered and lasts 72 hours\",\n  so we anchor it at the **business's first outbound message after the\n  referral** (the closest signal we have to delivery time). While open, any\n  message type (free-form OR template) is allowed and is free.\n\n**Important:** For fresh conversations where `last_customer_message_at` is null,\nwe check for recent inbound messages from the same contact on the same channel\n(across all conversations) to determine the window status.\n\n**Required Scopes:** `conversations:read`\n\nArgs:\n    conversation_id: The conversation ID to check\n    tenant_id: Tenant ID from authentication (automatic)\n\nReturns:\n    WhatsAppWindowStatusResponse (see schema): in_window, window_type,\n    remaining_seconds, requires_template, is_free_entry_point,\n    last_customer_message_at, window_end_at, free_entry_point_anchor_at.\n\nRaises:\n    404: Conversation not found or access denied","type":"text/plain"},"url":{"path":["api","v1","whatsapp","conversations",":conversation_id","whatsapp-window"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5c6bbac5-1f44-4d9d-94e1-71b43ad16394","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","conversations",":conversation_id","whatsapp-window"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"in_window\": false,\n  \"requires_template\": true,\n  \"window_type\": \"customer_service\",\n  \"remaining_seconds\": 1397,\n  \"is_free_entry_point\": false,\n  \"last_customer_message_at\": \"string\",\n  \"window_end_at\": \"string\",\n  \"free_entry_point_anchor_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6acb3399-d838-407a-a09a-0ca83da6d311","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","conversations",":conversation_id","whatsapp-window"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"00c957b0-18c3-465c-9ba8-e62072791ab3","name":"Get Whatsapp Call Window","request":{"name":"Get Whatsapp Call Window","description":{"content":"Whether an OUTBOUND WhatsApp call can be placed on this conversation now,\nplus the call-permission window expiry (Feature #34 backend half).\n\nMirrors ``/conversations/{id}/whatsapp-window`` (the 24h MESSAGING window) but\nfor the CALL-permission window. WhatsApp's business-initiated calling requires\nan open call-permission window — granted by the customer (a permission grant\nor a prior connected call) and lasting **7 days (168h)**. The \"Call\" button in\nthe conversation view gates on this.\n\n**What we can derive today (and the gaps):**\n- ``calling_disabled``  — the master switch (``WHATSAPP_CALLING_ENABLED``) is\n  off OR the channel's ``calling_enabled`` config flag is off. Hard block.\n- ``no_permission``     — we have NO signal of a granted call-permission\n  window: no prior CONNECTED (answered) call on this conversation. We anchor\n  the window at the most recent answered call's ``answered_at`` + 7 days\n  (the closest signal we persist). GAP: we do NOT yet persist Meta's explicit\n  ``callback_permission_status`` grant/expiry per contact, so a permission\n  granted WITHOUT a prior connected call is not reflected here — flagged for a\n  follow-up (persist the grant from the calls webhook).\n- ``calling`` allowed   — calling enabled AND a connected call within the last\n  7 days → ``can_call: true`` with ``call_window_expires_at``.\n\nResponse (frontend contract):\n  ``{ can_call: bool, call_window_expires_at: ISO8601|null, reason: str|null,\n      billable: bool, last_connected_call_at: ISO8601|null }``\n``reason`` ∈ {no_permission, opted_out, rate_limited, calling_disabled, null}.\nOutbound is billable-on-answer, so ``billable`` is always true when\n``can_call`` (the UI can color the button accordingly).\n\n**Required Scopes:** `calls:view`","type":"text/plain"},"url":{"path":["api","v1","whatsapp","conversations",":conversation_id","call-window"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"3a82c57f-236f-4484-bba8-af76fbf599d3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","conversations",":conversation_id","call-window"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c046dbb8-53e6-4ecd-aeaf-42094a8f3216","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","conversations",":conversation_id","call-window"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"46caf862-2125-4fc6-8f63-f6015036a02d","name":"List Whatsapp Flows","request":{"name":"List Whatsapp Flows","description":{"content":"List available WhatsApp Flows for a channel\n\nRetrieves the flows of the channel's WhatsApp Business Account from Meta.\nFlows built in SendSeven carry ``definition_id`` / ``definition_status``.\nFlows of ARCHIVED SendSeven WhatsApp Flows are hidden unless\n``include_archived=true``; Meta flows superseded by \"publish changes\" are\nalways hidden (they no longer serve new sends).\n\n**Required Scopes:** `channels:read`\n\nRaises:\n    404: Channel not found or access denied\n    400: Channel is not a WhatsApp channel","type":"text/plain"},"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_archived","value":"false","description":"Also list Meta flows whose SendSeven WhatsApp Flow is archived"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"53890751-9852-4ac5-917c-24b6aebcdbac","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows"],"host":["{{baseUrl}}"],"query":[{"key":"include_archived","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"flows\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 0,\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8cffe542-73ea-43fe-af8b-1508fade5f86","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows"],"host":["{{baseUrl}}"],"query":[{"key":"include_archived","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6b8c67b9-2f44-4eb9-9a57-2b5e43acf575","name":"Get Whatsapp Flow Details","request":{"name":"Get Whatsapp Flow Details","description":{"content":"Get detailed information about a specific WhatsApp Flow\n\nReturns the flow's screens (with input fields, the raw `data` declaration\nas `data_schema`, and whether the screen is terminal), the entry screen,\nwhether the flow is static (no data endpoint — first-screen data must be\nsent with the message), and the saved default data per screen.\n\nThe flow JSON is cached for a few minutes; pass `refresh=true` to re-read it.\n\n**Required Scopes:** `channels:read`\n\nRaises:\n    404: Channel not found or access denied\n    400: Channel is not a WhatsApp channel","type":"text/plain"},"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"refresh","value":"false","description":"Bypass the cached flow JSON and re-download it from Meta"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"466542e1-906c-4592-a9f8-ac2b29148e74","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[{"key":"refresh","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"flow\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"screens\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"variables\": [\n    \"string\",\n    \"string\"\n  ],\n  \"entry_screen\": \"string\",\n  \"is_static\": true,\n  \"flow_json_available\": false,\n  \"defaults\": {\n    \"key_0\": {\n      \"key_0\": \"string\",\n      \"key_1\": false,\n      \"key_2\": 5703.285932002161,\n      \"key_3\": 6278\n    },\n    \"key_1\": {\n      \"key_0\": 5347,\n      \"key_1\": 2808.666563744212\n    }\n  },\n  \"error\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c222b561-bcc0-4095-9ef3-e93f9ce7f169","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows",":flow_id"],"host":["{{baseUrl}}"],"query":[{"key":"refresh","value":"false"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6e72be76-d18a-4fa6-94fd-c89e86b36435","name":"Update Whatsapp Flow Defaults","request":{"name":"Update Whatsapp Flow Defaults","description":{"content":"Save the default data for one screen of a WhatsApp Flow.\n\nThe saved data is used whenever this flow is sent without explicit `data`\n(from the conversation composer or as a template FLOW button). Send\n`data: null` to remove the saved default for that screen.\n\n**Required Scopes:** `channels:update`\n\nRaises:\n    404: Channel not found or access denied\n    400: Channel is not a WhatsApp channel\n    422: `{\"code\": \"invalid_defaults\", \"message\": ...}` (too large / not an object / too many flows)","type":"text/plain"},"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows",":flow_id","defaults"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"screen\": \"string\",\n  \"data\": {\n    \"key_0\": true,\n    \"key_1\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"79211bb8-0936-4871-bbe2-dbed8ac8ddd7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows",":flow_id","defaults"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"screen\": \"string\",\n  \"data\": {\n    \"key_0\": true,\n    \"key_1\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"flow_id\": \"string\",\n  \"success\": true,\n  \"defaults\": {\n    \"key_0\": {\n      \"key_0\": false\n    },\n    \"key_1\": {\n      \"key_0\": 2297.0777627018324,\n      \"key_1\": 2791\n    },\n    \"key_2\": {\n      \"key_0\": true\n    },\n    \"key_3\": {\n      \"key_0\": 4257.335102768565,\n      \"key_1\": 702\n    },\n    \"key_4\": {\n      \"key_0\": 8572.096052720482\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"68a97c54-44b2-4f82-bf6d-505d37ce90e0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","flows",":flow_id","defaults"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"flow_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"screen\": \"string\",\n  \"data\": {\n    \"key_0\": true,\n    \"key_1\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"79400c3b-a702-46f7-8c9d-da3cc2f63f23","name":"Send Whatsapp Flow","request":{"name":"Send Whatsapp Flow","description":{"content":"Send a WhatsApp Flow message (free-form, inside the 24-hour window)\n\nThe recipient is resolved from `conversation_id` (preferred), `contact_id`\nor `recipient` (phone number). Contacts without a phone number that are\nreachable via a WhatsApp business-scoped user ID are supported.\n\nFirst-screen data is merged per key: values in `data` win, then the saved\ndefault data for (flow_id, screen), then (for flows built in SendSeven) the\nflow's send-time data sources such as the contact profile, then the flow's\nexample data. When `screen` is omitted the flow's entry screen is used.\n\nString values in `data` (and in saved default data) may contain contact\nvariables, rendered per recipient before sending: `{{contact.first_name}}`,\n`{{contact.last_name}}`, `{{contact.name}}`, `{{contact.email}}`,\n`{{contact.phone}}`, `{{contact.birthday}}`, `{{contact.language}}` and\ncustom fields as `{{contact.custom.<key>}}`. Unknown or empty variables\nrender as an empty string. Example:\n`\"data\": {\"first_name\": \"{{contact.first_name}}\"}`.\n\nNote: the flow itself must bind the value as a dynamic property (e.g. a\nTextBody whose `text` is exactly `${data.first_name}`, declared in the\nscreen's `data`); a `${data.x}` written inside plain literal text is shown\nas-is by WhatsApp.\n\nA Flow message is a free-form interactive message, so it can only be sent\nwhile the customer service window is open. Outside the window use a\ntemplate with a Flow button.\n\n**Required Scopes:** `messages:create`\n\nRaises:\n    404: Channel, conversation or contact not found\n    400: Not a WhatsApp channel; `conversation_channel_mismatch`; `no_whatsapp_recipient`\n    409: CHANNEL_DISCONNECTED; `conversation_owned_elsewhere` (Custom\n        Inboxes: the contact is in an ongoing conversation a colleague\n        handles that you cannot open)\n    422: `outside_service_window`","type":"text/plain"},"url":{"path":["api","v1","whatsapp","flows","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"flow_cta\": \"string\",\n  \"contact_id\": \"string\",\n  \"recipient\": \"string\",\n  \"body\": \"string\",\n  \"header\": \"string\",\n  \"footer\": \"string\",\n  \"screen\": \"string\",\n  \"data\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"mode\": \"published\",\n  \"conversation_id\": \"string\",\n  \"flow_token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"cb047bc0-49af-4db7-ad45-6028920fba71","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","flows","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"flow_cta\": \"string\",\n  \"contact_id\": \"string\",\n  \"recipient\": \"string\",\n  \"body\": \"string\",\n  \"header\": \"string\",\n  \"footer\": \"string\",\n  \"screen\": \"string\",\n  \"data\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"mode\": \"published\",\n  \"conversation_id\": \"string\",\n  \"flow_token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"conversation_id\": \"string\",\n  \"message_id\": \"string\",\n  \"external_id\": \"string\",\n  \"flow_token\": \"string\",\n  \"screen\": \"string\",\n  \"error\": \"string\",\n  \"error_code\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2bea6f0d-372d-4704-9923-54ab0edffeef","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","flows","send"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"flow_id\": \"string\",\n  \"flow_cta\": \"string\",\n  \"contact_id\": \"string\",\n  \"recipient\": \"string\",\n  \"body\": \"string\",\n  \"header\": \"string\",\n  \"footer\": \"string\",\n  \"screen\": \"string\",\n  \"data\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"mode\": \"published\",\n  \"conversation_id\": \"string\",\n  \"flow_token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1405f626-f552-47d4-87d7-9a41cb6f3ca4","name":"Get Whatsapp Account Status","request":{"name":"Get Whatsapp Account Status","description":{"content":"Get WhatsApp Business Account status including billing/payment info.\n\nThis endpoint helps diagnose issues like \"Business eligibility payment issue\"\nby checking the WABA configuration and phone number status.\n\nPayment methods can be configured in two ways:\n1. Direct payment method on WABA (primary_funding_id)\n2. Shared credit line from Tech Provider/BSP (credit_lines edge)\n\nFor Tech Provider accounts, billing is typically handled through shared\ncredit lines, NOT primary_funding_id. This endpoint checks both methods.\n\n**Required Scopes:** `channels:read`\n\nArgs:\n    channel_id: The WhatsApp channel ID\n    tenant_id: Tenant ID from authentication (automatic)\n\nReturns:\n    Account status including:\n    - has_payment_issue: Boolean if NO payment method is configured\n    - has_billing_configured: Boolean if ANY billing method is set up\n    - billing_type: \"direct\" | \"credit_line\" | \"unknown\" | \"none\"\n    - has_credit_line: Boolean if credit line shared from Tech Provider\n    - account_status: WABA review status\n    - quality_rating: Phone number quality (GREEN, YELLOW, RED)\n    - messaging_limit: Current messaging tier\n    - payment_warning: Warning message if payment issue detected\n\nRaises:\n    404: Channel not found or access denied\n    400: Channel is not a WhatsApp channel","type":"text/plain"},"url":{"path":["api","v1","whatsapp","channels",":channel_id","account-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"01fa8472-a1d0-4eb1-af42-60533a33d81d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","account-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b4034f56-e5fd-4689-97e4-0ca3a0e4a978","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","account-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6a294fff-59ba-4873-b9d9-a3bb72c18304","name":"Get Whatsapp Sending Limit","request":{"name":"Get Whatsapp Sending Limit","description":{"content":"Get a WhatsApp channel's persisted *sending limit* (messaging tier).\n\nLean replacement for the live-fetching ``/account-status`` endpoint on the\nSettings → Channels page. Instead of hitting Meta on every page open, this\nendpoint serves a value persisted onto the channel's encrypted ``config`` and\nre-queries the provider at most **once per 24h per channel** (server-side,\nauthoritative gate). Safe to call on every page load: it is idempotent and\ncheap, and it NEVER 500s the page — a provider/token failure degrades to the\nlast-known value with ``stale=True`` and a soft ``error``.\n\n**Required Scopes:** `channels:read`\n\nArgs:\n    channel_id: The channel ID\n    tenant_id: Tenant ID from authentication (automatic)\n\nReturns:\n    The sending-limit contract dict:\n    ``{channel_id, channel_type, messaging_limit_tier, quality_rating,\n    throughput_level, phone_status, refreshed_at, last_checked_at, stale,\n    supported, error}``. For a non-WhatsApp channel ``supported`` is False\n    (still HTTP 200).\n\nRaises:\n    404: Channel not found or access denied","type":"text/plain"},"url":{"path":["api","v1","whatsapp","channels",":channel_id","sending-limit"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"dbe8eb26-5de7-4e22-a042-11db1aa8d3f6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","sending-limit"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9a68d2c8-432a-4a2c-9a2c-8f7602a66cbd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","sending-limit"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"22dd26f9-567c-4b36-bf4e-3ab1f90f0876","name":"Get Coexistence Status","request":{"name":"Get Coexistence Status","description":{"content":"Get WhatsApp Coexistence sync status for a channel.\n\nPolled by the frontend after a user finishes the Coexistence onboarding\nbranch. Returns the current history-backfill and address-book sync\nstate plus any disconnection signals received via ``account_update``\nwebhooks.\n\n**Required Scopes:** ``channels:read``\n\nReturns 404 if the channel doesn't exist or doesn't belong to the\nrequesting tenant — existence is not leaked across tenants.\n\nArgs:\n    channel_id: Channel UUID to fetch status for.\n\nReturns:\n    See ``CoexistenceStatusResponse``.","type":"text/plain"},"url":{"path":["api","v1","whatsapp","channels",":channel_id","coexistence-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a8bc04e8-1f2b-45c9-9e0e-6cda62ed2c61","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","coexistence-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"channel_id\": \"string\",\n  \"is_coexistence\": true,\n  \"is_on_biz_app\": true,\n  \"platform_type\": \"string\",\n  \"coexistence_onboarded_at\": \"1955-03-28T22:15:08.228Z\",\n  \"history_sync_status\": \"string\",\n  \"history_sync_progress\": 30,\n  \"history_sync_phase\": 5494,\n  \"contacts_sync_status\": \"string\",\n  \"disconnected_at\": \"1950-08-26T06:25:07.597Z\",\n  \"disconnection_reason\": \"string\",\n  \"reconnected_at\": \"1997-05-26T11:38:45.223Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"32e98495-a3c1-4f3f-9283-9114bbde095e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp","channels",":channel_id","coexistence-status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"8893a249-3f21-44fe-b084-78682627f491","name":"WhatsApp Templates","description":{"content":"Create, sync, preview, and send WhatsApp Business API message templates. Manage variable mappings and template translations.","type":"text/plain"},"item":[{"id":"14414c7b-879b-47c3-9b10-525d5060b510","name":"List Templates","request":{"name":"List Templates","description":{"content":"List WhatsApp message templates for the tenant\n\n**Required Scopes:** `channels:read`\n\nReturns all synced WhatsApp templates, optionally filtered by channel or status.\nTemplates must be synced first using POST /sync endpoint.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"Filter by channel ID"},{"disabled":false,"key":"status","value":"PAUSED","description":"Filter by template status"},{"disabled":false,"key":"limit","value":"100","description":"Max results to return"},{"disabled":false,"key":"offset","value":"0","description":"Pagination offset"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"464534e4-f481-417c-97fb-11dc62f5509c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"status","value":"PAUSED"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"templates\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 7048,\n  \"channel_id\": \"string\",\n  \"status_filter\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d61a18a9-4570-428e-8bbe-bddf33882c2f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"status","value":"PAUSED"},{"key":"limit","value":"100"},{"key":"offset","value":"0"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a97a6efc-1677-418f-a40c-a4a61470af91","name":"Create Template","request":{"name":"Create Template","description":{"content":"Create a new WhatsApp message template\n\n**Required Scopes:** `channels:admin`\n\nSubmits a new template to Meta for approval. Templates typically take\n24-48 hours to be reviewed and approved.\n\nTemplate name must be lowercase, using only letters, numbers, and underscores.\n\nComponents structure:\n- HEADER (optional): TEXT, IMAGE, VIDEO, or DOCUMENT\n- BODY (required): Main message text with {{1}}, {{2}} placeholders\n- FOOTER (optional): Small text at bottom\n- BUTTONS (optional): Up to 3 buttons\n\nExample:\n```json\n{\n    \"channel_id\": \"uuid\",\n    \"name\": \"order_confirmation\",\n    \"category\": \"UTILITY\",\n    \"language\": \"en\",\n    \"components\": [\n        {\"type\": \"HEADER\", \"format\": \"TEXT\", \"text\": \"Order Update\"},\n        {\"type\": \"BODY\", \"text\": \"Hi {{1}}, your order #{{2}} has been shipped!\",\n         \"example\": {\"body_text\": [[\"John\", \"12345\"]]}},\n        {\"type\": \"FOOTER\", \"text\": \"Reply STOP to unsubscribe\"},\n        {\"type\": \"BUTTONS\", \"buttons\": [\n            {\"type\": \"URL\", \"text\": \"Track Order\", \"url\": \"https://example.com/track/{{1}}\"}\n        ]}\n    ]\n}\n```\n\nCAROUSEL templates carry their cards in a `CAROUSEL` component's `cards`\narray (up to 10). Each card mirrors a mini-template — exactly one\nIMAGE/VIDEO header, an OPTIONAL BODY, and a REQUIRED BUTTONS component with\n1-2 buttons — and Meta requires every card to share the same header format,\nthe same body-presence, and an identical button layout. Those structural\nrules are validated up front (400 on failure) before the template is\nsubmitted to Meta; in particular a button-less card is caught here instead\nof coming back from Meta as an unexplained \"Invalid parameter\".\n\nAUTHENTICATION templates are not free-form: WhatsApp generates the message\ntext, so no HEADER and no BODY/FOOTER text are accepted. The only options\nare `{\"type\": \"BODY\", \"add_security_recommendation\": true}`,\n`{\"type\": \"FOOTER\", \"code_expiration_minutes\": 1..90}` and exactly one\n`COPY_CODE` button (label max 25 chars; added as \"Copy Code\" when omitted),\nplus the optional top-level `message_send_ttl_seconds` (30-900). Any other\ncomponent shape is rejected with an actionable 400 before Meta is called.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"name\": \"vrnxx\",\n  \"category\": \"MARKETING\",\n  \"components\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"language\": \"en\",\n  \"allow_category_change\": false,\n  \"parameter_format\": \"positional\",\n  \"body_named_examples\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"message_send_ttl_seconds\": 878,\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7b848ca0-b2b3-42da-8427-b2a4631bb4d0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"name\": \"5lohttatrz\",\n  \"category\": \"AUTHENTICATION\",\n  \"components\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"language\": \"en\",\n  \"allow_category_change\": false,\n  \"parameter_format\": \"positional\",\n  \"body_named_examples\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"message_send_ttl_seconds\": 327,\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"id\": \"string\",\n  \"template_id\": \"string\",\n  \"status\": \"string\",\n  \"error\": \"string\",\n  \"error_code\": 7022,\n  \"error_subcode\": 3815,\n  \"error_category\": \"string\",\n  \"error_is_retryable\": true,\n  \"fbtrace_id\": \"string\",\n  \"meta_message\": \"string\",\n  \"meta_details\": \"string\",\n  \"meta_user_title\": \"string\",\n  \"meta_user_message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9c23111c-05f6-4ddb-b83c-1cdecb7159c8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"name\": \"5lohttatrz\",\n  \"category\": \"AUTHENTICATION\",\n  \"components\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"language\": \"en\",\n  \"allow_category_change\": false,\n  \"parameter_format\": \"positional\",\n  \"body_named_examples\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"message_send_ttl_seconds\": 327,\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"45ed943e-b0cc-4128-96d8-c5492049ba00","name":"Get Available Fields","request":{"name":"Get Available Fields","description":{"content":"Get available contact fields for variable mapping\n\n**Required Scopes:** `channels:read`\n\nReturns list of contact fields that can be mapped to template placeholders.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates","fields"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e135628b-db7b-4c3c-b98a-aaf7fca71a87","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","fields"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"fields\": [\n    {\n      \"value\": \"contact.first_name\",\n      \"label\": \"First Name\",\n      \"example\": \"John\"\n    },\n    {\n      \"value\": \"contact.last_name\",\n      \"label\": \"Last Name\",\n      \"example\": \"Doe\"\n    },\n    {\n      \"value\": \"contact.name\",\n      \"label\": \"Full Name\",\n      \"example\": \"John Doe\"\n    },\n    {\n      \"value\": \"contact.email\",\n      \"label\": \"Email\",\n      \"example\": \"john@example.com\"\n    },\n    {\n      \"value\": \"contact.phone\",\n      \"label\": \"Phone\",\n      \"example\": \"+1234567890\"\n    },\n    {\n      \"value\": \"contact.company\",\n      \"label\": \"Company\",\n      \"example\": \"Acme Inc\"\n    },\n    {\n      \"value\": \"agent.name\",\n      \"label\": \"Agent Name\",\n      \"example\": \"Support Agent\"\n    },\n    {\n      \"value\": \"agent.nickname\",\n      \"label\": \"Agent Nickname\",\n      \"example\": \"Sam\"\n    },\n    {\n      \"value\": \"custom\",\n      \"label\": \"Custom Value\",\n      \"example\": \"(enter manually)\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ede07c57-0e4c-4464-a5e9-7fdc9af74619","name":"Suggest Mapping","request":{"name":"Suggest Mapping","description":{"content":"Suggest canonical ``variable_mapping`` keys for a list of placeholder names.\n\n**Required Scopes:** `channels:read`\n\nReturns a dict keyed by the input name. Unknown names map to ``None`` so\nthe caller can render an empty dropdown for the user to fill in.\n\nExample:\n```\nGET /api/v1/whatsapp-templates/suggest-mapping?names=first_name,workspace,xyz\n-> {\"first_name\": \"contact.first_name\", \"workspace\": \"tenant.name\", \"xyz\": null}\n```","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates","suggest-mapping"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"names","value":"string","description":"(Required) Comma-separated list of NAMED template placeholder names (e.g. ``first_name,workspace,order_id``)."}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f24ce185-c4bd-45ae-9b65-cae91ca93485","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","suggest-mapping"],"host":["{{baseUrl}}"],"query":[{"key":"names","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"key_0\": \"string\",\n  \"key_1\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f088872d-565b-45f4-a5cb-dfa803553903","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","suggest-mapping"],"host":["{{baseUrl}}"],"query":[{"key":"names","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"1bab3e7b-361b-45f0-a7dd-c16c470aac2d","name":"List Template Library","request":{"name":"List Template Library","description":{"content":"Browse Meta's pre-approved WhatsApp **Template Library**.\n\n**Required Scopes:** `channels:read`\n\nMeta maintains a catalog of ready-made UTILITY and AUTHENTICATION templates.\nAdopting one unchanged (see `POST /library/adopt`) creates it in the\ncustomer's WABA already **approved** — no 24h review.\n\nResults are cached server-side (12h) because the catalog is global and\nnear-static while Meta rate-limits template endpoints aggressively. When\nMeta is unreachable but a previous catalog is cached, that copy is returned\nwith `stale: true` and a `warning` instead of an error.\n\n`already_added` marks entries the tenant already has on this channel, so the\nUI can avoid a guaranteed Meta duplicate rejection.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates","library"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"(Required) WhatsApp channel whose WABA credentials are used to read the catalog"},{"disabled":false,"key":"language","value":"string","description":"Meta language code, e.g. ``en_US``. Omit for all languages."},{"disabled":false,"key":"search","value":"string","description":"Free-text search across the catalog"},{"disabled":false,"key":"topic","value":"string","description":"e.g. ``PAYMENTS``"},{"disabled":false,"key":"usecase","value":"string","description":"e.g. ``LOW_BALANCE_WARNING``"},{"disabled":false,"key":"industry","value":"string","description":"e.g. ``FINANCIAL_SERVICES``"},{"disabled":false,"key":"name","value":"string","description":"Exact library template name"},{"disabled":false,"key":"limit","value":"100","description":"Max entries to return"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e9e16f8c-2304-47cb-9f3c-6ef0190a38b7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","library"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"language","value":"string"},{"key":"search","value":"string"},{"key":"topic","value":"string"},{"key":"usecase","value":"string"},{"key":"industry","value":"string"},{"key":"name","value":"string"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"total\": 0,\n  \"facets\": {\n    \"languages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"topics\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"usecases\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"industries\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"language\": \"string\",\n  \"stale\": false,\n  \"warning\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ca11d73f-7fc0-4dc3-ab3c-f873f9569105","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","library"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"},{"key":"language","value":"string"},{"key":"search","value":"string"},{"key":"topic","value":"string"},{"key":"usecase","value":"string"},{"key":"industry","value":"string"},{"key":"name","value":"string"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e3ac0075-8eac-460d-b133-c1ce876a4ac9","name":"Adopt Library Template","request":{"name":"Adopt Library Template","description":{"content":"Add a template from Meta's Template Library to the customer's WABA.\n\n**Required Scopes:** `channels:admin` **or** `messages:create`\n\n`messages:create` is accepted on purpose: the primary entry point is an\nagent in /conversations who has no approved template and needs one to open\nthe 24h window. Adopting an unchanged library template is a pre-approved,\nMeta-curated action — gating it behind channel administration would break\nexactly the flow it exists for.\n\nBehaviour:\n- Unchanged library templates come back from Meta already `approved` and are\n  persisted as such. We deliberately do **not** re-sync to confirm: sync is\n  the rate-limited call, and the customer's next action is to send.\n- Idempotent — re-adopting a template the tenant already has returns the\n  existing row with `already_existed: true` and HTTP 200.\n- Omit `button_inputs` to accept the library entry's own example button\n  values (the one-click path). Supply them to point links/phone numbers at\n  the customer's own destinations.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates","library","adopt"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"library_template_name\": \"string\",\n  \"language\": \"en_US\",\n  \"category\": \"string\",\n  \"name\": \"string\",\n  \"button_inputs\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"snapshot\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"adc68e24-2d05-4376-96e8-72ba195aa0a6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","library","adopt"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"library_template_name\": \"string\",\n  \"language\": \"en_US\",\n  \"category\": \"string\",\n  \"name\": \"string\",\n  \"button_inputs\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"snapshot\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"id\": \"string\",\n  \"template_id\": \"string\",\n  \"name\": \"string\",\n  \"language\": \"string\",\n  \"status\": \"string\",\n  \"category\": \"string\",\n  \"already_existed\": false,\n  \"error\": \"string\",\n  \"error_code\": 8941,\n  \"error_subcode\": 9354,\n  \"error_is_retryable\": false,\n  \"fbtrace_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"089c14c4-1c62-4138-95f0-af7af373624e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","library","adopt"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"library_template_name\": \"string\",\n  \"language\": \"en_US\",\n  \"category\": \"string\",\n  \"name\": \"string\",\n  \"button_inputs\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"snapshot\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d83097eb-8d39-402e-a685-081a33e8c1fc","name":"Get Template","request":{"name":"Get Template","description":{"content":"Get a specific WhatsApp template by ID\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e61368bf-c8d4-4dce-b262-8815311239fe","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"category\": \"MARKETING\",\n  \"body_text\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"template_id\": \"string\",\n  \"status\": \"PAUSED\",\n  \"created_at\": \"1949-08-07T02:50:08.879Z\",\n  \"updated_at\": \"1979-09-26T06:33:42.699Z\",\n  \"language\": \"en\",\n  \"header_type\": \"NONE\",\n  \"header_text\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"waba_id\": \"string\",\n  \"quality_score\": \"string\",\n  \"parameter_format\": \"positional\",\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\",\n  \"quick_reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"carousel_cards\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"has_call_permission_request\": false,\n  \"call_permission_blocked\": false,\n  \"channel_is_coexistence\": false,\n  \"last_synced_at\": \"1981-07-19T20:58:32.519Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"59a6725e-9ba6-4d9a-8d29-a85618273aa4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3e317b00-9d4d-425a-943f-2e7ce4aa9300","name":"Update Template","request":{"name":"Update Template","description":{"content":"Update local-only fields on a WhatsApp template.\n\n**Required Scopes:** `channels:admin`\n\nCurrently only ``default_header_media_url`` and\n``default_header_document_filename`` are mutable here. Template content\n(body text, header, buttons) is approved by Meta and cannot be edited in\nplace — to change those, delete and re-create the template.\n\nPass an empty string to clear either field; omit the field to leave it\nunchanged.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"components\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"898574aa-44ff-4e22-93bb-6ae78d4f54f2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"components\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"name\": \"string\",\n  \"category\": \"MARKETING\",\n  \"body_text\": \"string\",\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"template_id\": \"string\",\n  \"status\": \"PAUSED\",\n  \"created_at\": \"1949-08-07T02:50:08.879Z\",\n  \"updated_at\": \"1979-09-26T06:33:42.699Z\",\n  \"language\": \"en\",\n  \"header_type\": \"NONE\",\n  \"header_text\": \"string\",\n  \"footer_text\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"variable_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"waba_id\": \"string\",\n  \"quality_score\": \"string\",\n  \"parameter_format\": \"positional\",\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\",\n  \"quick_reply_buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"carousel_cards\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"has_call_permission_request\": false,\n  \"call_permission_blocked\": false,\n  \"channel_is_coexistence\": false,\n  \"last_synced_at\": \"1981-07-19T20:58:32.519Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"33c1a7bb-5d5e-42f8-87a6-3f0450f0fe99","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"components\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"default_header_media_url\": \"string\",\n  \"default_header_document_filename\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7a21d409-ed8f-46e3-849f-6f228b2dbe4a","name":"Delete Template","request":{"name":"Delete Template","description":{"content":"Delete a WhatsApp message template\n\n**Required Scopes:** `channels:admin`\n\nDeletes the template from both Meta and local database.\nNote: Deleting an approved template will make it unavailable immediately.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"cb21d1d4-792b-4151-9c86-1d172d110572","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"a1e4056f-7d7b-4468-ae9b-92fba9a00746","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"268a92a9-7523-4ed6-aba1-c38393d2df87","name":"Sync Templates","request":{"name":"Sync Templates","description":{"content":"Sync templates from WhatsApp Business API\n\n**Required Scopes:** `channels:admin`\n\nFetches all message templates from WhatsApp Business API and syncs them\nto the local database. This operation:\n- Adds new templates\n- Updates existing templates\n- Removes templates that no longer exist in WhatsApp\n\nThe channel must be a WhatsApp channel with valid credentials configured.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates","sync"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"channel_id","value":"string","description":"(Required) WhatsApp channel ID to sync templates for"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"35724b6d-5e36-419a-9bce-2edc593ac3c4","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","sync"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"synced\": 528,\n  \"added\": 3611,\n  \"updated\": 3631,\n  \"removed\": 3890,\n  \"errors\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"97863740-61ee-459e-9017-4f2683c1696b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","sync"],"host":["{{baseUrl}}"],"query":[{"key":"channel_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"13ddaade-fdb1-4a19-b1d3-bb4c67886769","name":"Update Variable Mapping","request":{"name":"Update Variable Mapping","description":{"content":"Update variable mapping for a template\n\n**Required Scopes:** `channels:update`\n\nMaps WhatsApp template placeholders ({{1}}, {{2}}, etc.) to contact fields\nfor automatic personalization when sending messages.\n\nExample mapping:\n```json\n{\n    \"variable_mapping\": {\n        \"1\": \"contact.first_name\",\n        \"2\": \"contact.company\"\n    }\n}\n```\n\nAvailable fields: contact.first_name, contact.last_name, contact.name,\ncontact.email, contact.phone, contact.company, contact.whatsapp_id (resolves to phone)","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates",":template_id","variable-mapping"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"variable_mapping\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\",\n    \"key_3\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"02b41851-efd7-4e51-bf65-d385cb1d2280","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id","variable-mapping"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"variable_mapping\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\",\n    \"key_3\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"variable_mapping\": {\n    \"key_0\": \"string\"\n  },\n  \"updated_at\": \"1987-09-04T22:54:45.645Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"55d16881-bde0-422c-9ed4-8670aa251747","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id","variable-mapping"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"variable_mapping\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": \"string\",\n    \"key_3\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8d777768-4df6-4b60-ae13-02a0f593af2c","name":"Preview Template","request":{"name":"Preview Template","description":{"content":"Preview a template with variable substitution\n\n**Required Scopes:** `channels:read`\n\nReturns the template with placeholders replaced using either:\n- Contact data (if contact_id provided)\n- Override values (if variable_values provided)\n- Sample data (if neither provided)\n\nUseful for testing variable mappings before sending.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates",":template_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"dde7a5a4-ac55-4c53-a72b-df451bcd3c82","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"body\": \"string\",\n  \"header\": \"string\",\n  \"footer\": \"string\",\n  \"buttons\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"variables_used\": {\n    \"key_0\": \"string\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f52c05b4-5878-4050-b81b-3aa1942eb656","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id","preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"variable_values\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8806b1b5-9c49-4d5a-a05e-93c2ebbf8da8","name":"Send Template","request":{"name":"Send Template","description":{"content":"Send a template message to a contact\n\n**Required Scopes:** `messages:create`\n\nSends the specified WhatsApp template to the contact. The template must be\napproved by WhatsApp before it can be sent.\n\nThe path segment accepts EITHER:\n\n* the template's DB ID (canonical UUID, e.g.\n  `f47ac10b-58cc-4372-a567-0e02b2c3d479`), OR\n* the template's WhatsApp `name` (e.g. `order_confirmation`).\n\nResolution rule: a 36-char canonical-form UUID is treated as the DB ID;\nanything else is treated as a name. Names are looked up by\n`(tenant_id, name)`. If the same name exists across multiple channels or\nlanguages, pass `conversation_id` in the body so the owning channel/WABA\ncan be inferred — otherwise the request returns 400 asking for the\nexplicit DB ID.\n\nVariables are automatically populated from:\n1. Override values in the request (highest priority)\n2. Mapped contact fields (from variable_mapping)\n3. Empty string (fallback)\n\nCreates or uses an existing conversation for the message.\n\n`variable_values` accepts a list (positional only) OR a dict. The accepted\nshape is determined by the template's `parameter_format`:\n\n- `positional` template: `[\"John\", \"ORD-1\"]` or `{\"1\": \"John\", \"2\": \"ORD-1\"}`\n- `named` template: `{\"first_name\": \"John\", \"order_id\": \"ORD-1\"}`\n\nSending the wrong shape returns 400 with an actionable error.","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates",":template_id_or_name","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id_or_name","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"variable_values\": {\n    \"1\": \"John\",\n    \"2\": \"ORD-98765\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"420a99ec-0b25-4678-b670-59706896935b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id_or_name","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id_or_name","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"variable_values\": {\n    \"1\": \"John\",\n    \"2\": \"ORD-98765\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"conversation_id\": \"b5d8e2a1-4c3f-4a8b-9d2e-1f6a7b8c9d0e\",\n  \"external_id\": \"wamid.HBgNNDkxNTIxNTU4MDg2NRUCABIYFjNFQjBCNUYxMjdFRkI5\",\n  \"message_id\": \"f47ac10b-58cc-4372-a567-0e02b2c3d479\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6610bdac-971a-43d9-944a-95c617d5ef50","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates",":template_id_or_name","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"template_id_or_name","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"c1d2e3f4-5678-9abc-def0-1234567890ab\",\n  \"variable_values\": {\n    \"1\": \"John\",\n    \"2\": \"ORD-98765\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ddd30e94-ae32-4a0b-8ecc-331c64c55ca7","name":"Upload Template Media","request":{"name":"Upload Template Media","description":{"content":"Upload media for WhatsApp template header\n\n**Required Scopes:** `channels:admin`\n\nUploads an image, video, or document to Meta's servers and returns a handle\nthat can be used when creating a template with a media header.\n\nSupported media types and formats:\n- **image**: JPEG, PNG (max 5MB)\n- **video**: MP4, 3GPP (max 16MB)\n- **document**: PDF (max 100MB)\n\nReturns:\n    - handle: The media handle to use in template creation\n    - file_name: Original file name\n    - media_type: Type of media uploaded","type":"text/plain"},"url":{"path":["api","v1","whatsapp-templates","upload-media"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"multipart/form-data"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"key":"channel_id","value":"string","type":"text","description":"(Required) "},{"key":"media_type","value":"string","type":"text","description":"(Required) "},{"key":"file","type":"file","description":"(Required) "}]}},"response":[{"id":"62ec5ff2-b836-4414-ba93-9abeafa94a93","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","upload-media"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"channel_id","value":"string","type":"text"},{"description":{"content":"(Required) ","type":"text/plain"},"key":"media_type","value":"string","type":"text"},{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"handle\": \"string\",\n  \"file_name\": \"string\",\n  \"media_type\": \"string\",\n  \"media_url\": \"string\",\n  \"attachment_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bc307c16-5b84-4bfc-8be8-ee239c976bc7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-templates","upload-media"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"formdata","formdata":[{"description":{"content":"(Required) ","type":"text/plain"},"key":"channel_id","value":"string","type":"text"},{"description":{"content":"(Required) ","type":"text/plain"},"key":"media_type","value":"string","type":"text"},{"description":{"content":"(Required) ","type":"text/plain"},"key":"file","type":"file"}]}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"2cdd14dc-686d-44c0-a33f-aa2ed98c36d2","name":"Widgets","description":{"content":"Configure embeddable website widgets for live chat, newsletter signup, and customer engagement.","type":"text/plain"},"item":[{"id":"14e796ab-0499-42f8-972f-96cbcc054521","name":"Create Widget","request":{"name":"Create Widget","description":{"content":"Create a new widget\n\n**Required Scopes:** `widgets:create`","type":"text/plain"},"url":{"path":["api","v1","widgets"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"config\": {\n    \"primaryColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"backgroundColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"textColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fontFamily\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"welcomeMessage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subtitle\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"buttonText\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"position\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offsetX\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offsetY\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logoUrl\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"companyName\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelIds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"categoryIds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatOnlyWhenOnline\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatOfflineMessage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowChannelSwitch\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartLiveChat\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatPopOutEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatSchedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fullscreenOnMobile\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bubbleLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"cardLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"cornerRadius\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"defaultSize\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"showAgentType\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowReactions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"launcher_icon\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelButtonStyle\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelDisplayMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"homeLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"launcherMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"desktopHandoff\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prechatMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushAutoPrompt\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushPromptDelay\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartBotId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartFlowId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"customCss\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"categoryId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"widget_type\": \"bubble\",\n  \"use_case\": \"support\",\n  \"privacy_url\": \"string\",\n  \"is_analytics_enabled\": true,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"6364388e-1cc8-4051-8b60-53d72dc1db1c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"config\": {\n    \"primaryColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"backgroundColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"textColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fontFamily\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"welcomeMessage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subtitle\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"buttonText\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"position\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offsetX\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offsetY\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logoUrl\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"companyName\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelIds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"categoryIds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatOnlyWhenOnline\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatOfflineMessage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowChannelSwitch\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartLiveChat\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatPopOutEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatSchedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fullscreenOnMobile\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bubbleLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"cardLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"cornerRadius\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"defaultSize\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"showAgentType\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowReactions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"launcher_icon\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelButtonStyle\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelDisplayMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"homeLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"launcherMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"desktopHandoff\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prechatMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushAutoPrompt\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushPromptDelay\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartBotId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartFlowId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"customCss\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"categoryId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"widget_type\": \"bubble\",\n  \"use_case\": \"support\",\n  \"privacy_url\": \"string\",\n  \"is_analytics_enabled\": true,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"widget_type\": \"card\",\n  \"use_case\": \"newsletter\",\n  \"config\": {\n    \"key_0\": 6055.648271468313,\n    \"key_1\": 7722,\n    \"key_2\": 9813.820044820053,\n    \"key_3\": \"string\"\n  },\n  \"is_analytics_enabled\": true,\n  \"is_active\": true,\n  \"created_at\": \"1990-04-29T14:43:50.318Z\",\n  \"updated_at\": \"1972-09-21T05:41:55.749Z\",\n  \"privacy_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1c2a8be6-a0ab-4c91-9737-6e9b5399dafc","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"config\": {\n    \"primaryColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"backgroundColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"textColor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fontFamily\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"welcomeMessage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"subtitle\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"buttonText\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"position\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offsetX\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"offsetY\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"logoUrl\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"companyName\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelIds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"categoryIds\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatOnlyWhenOnline\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatOfflineMessage\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowChannelSwitch\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartLiveChat\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatPopOutEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"liveChatSchedule\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"fullscreenOnMobile\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"bubbleLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"cardLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"cornerRadius\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"defaultSize\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"showAgentType\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"allowReactions\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"launcher_icon\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelButtonStyle\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelDisplayMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"homeLayout\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"launcherMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"desktopHandoff\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prechatMode\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushEnabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushAutoPrompt\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"pushPromptDelay\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartBotId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"autoStartFlowId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"customCss\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"channelId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"categoryId\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"widget_type\": \"bubble\",\n  \"use_case\": \"support\",\n  \"privacy_url\": \"string\",\n  \"is_analytics_enabled\": true,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"295647db-324f-4068-a397-1508b83ef1c8","name":"List Widgets","request":{"name":"List Widgets","description":{"content":"List all widgets for the tenant","type":"text/plain"},"url":{"path":["api","v1","widgets"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"skip","value":"0"},{"disabled":false,"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6e1af7f8-f086-47bc-85bb-8753595c2b8c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets"],"host":["{{baseUrl}}"],"query":[{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"[\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"widget_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"use_case\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_analytics_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"privacy_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"tenant_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"name\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"widget_type\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"use_case\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"config\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_analytics_enabled\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"is_active\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"privacy_url\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n]","cookie":[],"_postman_previewlanguage":"json"},{"id":"16550ee6-7676-404d-bf33-d3238839e8f2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets"],"host":["{{baseUrl}}"],"query":[{"key":"skip","value":"0"},{"key":"limit","value":"100"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"04cf3d2f-7726-44cc-805e-85d248b90c70","name":"Get Widget","request":{"name":"Get Widget","description":{"content":"Get a specific widget","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c402d886-a303-4e98-a97b-f926f0d01a2d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"widget_type\": \"card\",\n  \"use_case\": \"newsletter\",\n  \"config\": {\n    \"key_0\": 6055.648271468313,\n    \"key_1\": 7722,\n    \"key_2\": 9813.820044820053,\n    \"key_3\": \"string\"\n  },\n  \"is_analytics_enabled\": true,\n  \"is_active\": true,\n  \"created_at\": \"1990-04-29T14:43:50.318Z\",\n  \"updated_at\": \"1972-09-21T05:41:55.749Z\",\n  \"privacy_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"57e73f6e-52fc-42aa-b5dd-49e276e3d7e3","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dfffbb40-8718-4fb8-923c-529d9a433b61","name":"Update Widget","request":{"name":"Update Widget","description":{"content":"Update a widget\n\n**Required Scopes:** `widgets:update`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"privacy_url\": \"string\",\n  \"is_analytics_enabled\": false,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"073fd4f1-e0e9-4641-8cb3-5d0610b18395","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"privacy_url\": \"string\",\n  \"is_analytics_enabled\": false,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"name\": \"string\",\n  \"widget_type\": \"card\",\n  \"use_case\": \"newsletter\",\n  \"config\": {\n    \"key_0\": 6055.648271468313,\n    \"key_1\": 7722,\n    \"key_2\": 9813.820044820053,\n    \"key_3\": \"string\"\n  },\n  \"is_analytics_enabled\": true,\n  \"is_active\": true,\n  \"created_at\": \"1990-04-29T14:43:50.318Z\",\n  \"updated_at\": \"1972-09-21T05:41:55.749Z\",\n  \"privacy_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8a5e4b7f-4c5b-4ca7-8029-241665d9ec9a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"config\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"privacy_url\": \"string\",\n  \"is_analytics_enabled\": false,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"29d41efb-3cba-4acf-b21f-0e761320b6b4","name":"Delete Widget","request":{"name":"Delete Widget","description":{"content":"Delete a widget\n\n**Required Scopes:** `widgets:delete`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"45ff3e6d-1ed5-4817-a482-e7080959b003","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"method":"DELETE","body":{}},"status":"No Content","code":204,"header":[{"key":"Content-Type","value":"text/plain"}],"body":"","cookie":[],"_postman_previewlanguage":"text"},{"id":"0f005ba1-16bd-4136-8acd-7dc17b715597","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"86a4e010-8c96-40f4-b7a6-d98d1321d77e","name":"Get Embed Code","request":{"name":"Get Embed Code","description":{"content":"Get the embed code for a widget","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id","embed-code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"cd8c4fd9-1b37-4401-acfe-549d852be602","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","embed-code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"widget_id\": \"string\",\n  \"embed_code\": \"string\",\n  \"script_url\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7bd01b37-6529-49c8-8ab6-206c189b38b8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","embed-code"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"99438a75-4722-40d2-b7ec-73ea6d9a7de9","name":"Get Widget Analytics","request":{"name":"Get Widget Analytics","description":{"content":"Get analytics data for a widget\n\nReturns aggregated counts by event type and daily breakdown\n\n**Required Scopes:** `widgets:read`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id","analytics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9d13d771-3860-4c4b-b38c-f3ba16b36174","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"widget_id\": \"string\",\n  \"analytics_enabled\": true,\n  \"message\": \"string\",\n  \"period_days\": 1953,\n  \"start_date\": \"string\",\n  \"end_date\": \"string\",\n  \"totals\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"daily\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1f4a6ec1-0557-4a3b-b30d-d35bcf4249fa","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"days","value":"30"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5dd80dce-c391-4499-bef4-17ef7459274d","name":"Get Identity Verification","request":{"name":"Get Identity Verification","description":{"content":"Get the identity verification status of a widget\n\nReturns whether signed identities are verified, whether a secret exists,\nthe last 4 characters of the secret and when it was generated. Never\nreturns the secret itself.\n\n**Required Scopes:** `widgets:read`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id","identity-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2e3006c7-a01c-4fe2-9c6f-9ce949b815e5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"enabled\": true,\n  \"has_secret\": true,\n  \"max_age_seconds\": 8048,\n  \"secret_hint\": \"string\",\n  \"secret_rotated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"8394d451-6eee-4c7d-aa1b-39de1976f79a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7c83e196-41fe-41ab-a4a2-fe08f6b476da","name":"Update Identity Verification","request":{"name":"Update Identity Verification","description":{"content":"Enable or disable identity verification for a widget\n\nBody: `{\"enabled\": true}` or `{\"enabled\": false}`. Enabling requires a\nsecret (generate one with the rotate endpoint first), otherwise 409\n`secret_required`.\n\n**Required Scopes:** `widgets:update`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id","identity-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"enabled\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e16d527d-ab77-4aeb-8bd1-1e9cb5845f22","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"enabled\": {}\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"enabled\": true,\n  \"has_secret\": true,\n  \"max_age_seconds\": 8048,\n  \"secret_hint\": \"string\",\n  \"secret_rotated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"38212f25-126f-4be3-a499-db39467290af","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"enabled\": {}\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c620fda4-ed23-40c8-9648-a434963403f0","name":"Rotate Identity Verification Secret","request":{"name":"Rotate Identity Verification Secret","description":{"content":"Generate a new identity verification secret for a widget\n\nReturns the new secret. The previous secret stops working immediately, so\nevery identity signed with it falls back to unverified until your server\nsigns with the new one. Store the secret on your server only; never put it\nin browser code.\n\nOnly a signed-in Owner or Admin in the SendSeven app can call this. API\nkeys, OAuth apps (including MCP clients) and embed tokens get 403\n`interactive_session_required`, whatever their scopes.\n\n**Required Scopes:** `settings:admin`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id","identity-verification","rotate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"00cf0a7b-714e-409f-a39a-d501864fb474","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification","rotate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"secret\": \"string\",\n  \"secret_hint\": \"string\",\n  \"secret_rotated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"713d89ef-373e-4a41-94c7-37df83cb983a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification","rotate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"04c83716-35c9-4f2c-aa27-0cc1bfdb4736","name":"Reveal Identity Verification Secret","request":{"name":"Reveal Identity Verification Secret","description":{"content":"Reveal the current identity verification secret of a widget\n\nReturns 404 `secret_not_found` when no secret has been generated yet.\n\nOnly a signed-in Owner or Admin in the SendSeven app can call this. API\nkeys, OAuth apps (including MCP clients) and embed tokens get 403\n`interactive_session_required`, whatever their scopes.\n\n**Required Scopes:** `settings:admin`","type":"text/plain"},"url":{"path":["api","v1","widgets",":widget_id","identity-verification","reveal"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"dc41c45a-a005-41bf-bc8a-c052661d9059","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification","reveal"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"secret\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f9b5cff0-f120-4bee-b49e-f3efdcc61470","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","widgets",":widget_id","identity-verification","reveal"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"widget_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"a03d442f-c09d-421d-bee0-7baca46d1765","name":"WhatsApp Catalogue","description":{"content":"","type":"text/plain"},"item":[{"id":"6308edb5-2ec0-4ef7-89bc-bccf12883873","name":"Get Catalogue Status","request":{"name":"Get Catalogue Status","description":{"content":"Catalogue status for a WhatsApp channel.\n\nUngated so the frontend can read ``beta_enabled`` to decide whether to show\nthe catalogue UI.\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog",":channel_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c636c2ea-3f35-456a-bad3-baab2ef3e3d3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"beta_enabled\": true,\n  \"connected\": true,\n  \"can_send\": false,\n  \"catalog_id\": \"string\",\n  \"product_count\": 0,\n  \"last_synced_at\": \"string\",\n  \"degrade_reason\": \"string\",\n  \"config_id\": \"string\",\n  \"app_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"863ba996-50a2-45f4-be97-b8c78ea3f044","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id","status"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"faa75519-d1d0-463b-a389-d45f6cf38b46","name":"Connect Catalogue","request":{"name":"Connect Catalogue","description":{"content":"Connect a Meta product catalogue to a WhatsApp channel.\n\nConsumes the catalogue token/code from the FBLB dialog, resolves the\ncatalogue id from the token's ``catalog_management`` granular scope, and\npersists the (encrypted) token + catalogue id on the channel.\n\n**Required Scopes:** `channels:update`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog","connect"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"code\": \"string\",\n  \"access_token\": \"string\",\n  \"catalog_id\": \"69300297606\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"934c0a7b-a93c-401f-81d3-4e384de8fe61","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog","connect"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"code\": \"string\",\n  \"access_token\": \"string\",\n  \"catalog_id\": \"69300297606\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"catalog_id\": \"string\",\n  \"same_catalog\": true,\n  \"warning\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"439785a2-89b3-4844-8050-dacb93d8b79a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog","connect"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"code\": \"string\",\n  \"access_token\": \"string\",\n  \"catalog_id\": \"69300297606\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e9109ba6-9fa9-4f10-b855-90a4802fc7d2","name":"Sync Catalogue","request":{"name":"Sync Catalogue","description":{"content":"Re-sync products from Meta into our store.\n\n**Required Scopes:** `channels:update`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog",":channel_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"1d5e750b-553b-4f9f-b946-b16d0beed05e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"synced\": 6783,\n  \"degrade_reason\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"78d691f6-fa83-4a3e-8f70-2bd33757af95","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id","sync"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"204ec60d-e810-405f-96a5-da8200d9cba9","name":"List Catalogue Products","request":{"name":"List Catalogue Products","description":{"content":"List / search a channel's catalogue products (poll-on-open freshness).\n\n**Required Scopes:** `channels:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog",":channel_id","products"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"search","value":"string"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6b177aa9-8c16-43de-b4ae-bd8b954c105d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id","products"],"host":["{{baseUrl}}"],"query":[{"key":"search","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f086224b-0dcd-4a2e-b476-ba80c8c66225","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id","products"],"host":["{{baseUrl}}"],"query":[{"key":"search","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"107a3a56-2748-49c9-86e4-30e639108b66","name":"Disconnect Catalogue","request":{"name":"Disconnect Catalogue","description":{"content":"Disconnect the catalogue: clear the id + token and delete mirrored products.\n\n**Required Scopes:** `channels:delete`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"447fe86d-a4fe-4c3d-b113-daf161239762","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": false,\n  \"id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"57dbffdb-055c-4f75-a2a8-7b3085e97ae4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog",":channel_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c52b303e-6a46-4aa9-a889-c678a8b54d99","name":"Send Single Product","request":{"name":"Send Single Product","description":{"content":"Send a Single Product Message into a conversation.\n\nFail-closed on Coexistence numbers (409). Enqueues onto the messages-out\ntopic for delivery.\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog","send-product"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"product_retailer_id\": \"string\",\n  \"body\": \"string\",\n  \"footer\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"0bf8a58f-f51d-437d-919d-4735009445b7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog","send-product"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"product_retailer_id\": \"string\",\n  \"body\": \"string\",\n  \"footer\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"inbound\",\n  \"message_type\": \"file\",\n  \"status\": \"pending\",\n  \"created_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"platform\": \"string\",\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"from\": \"string\",\n  \"to\": \"string\",\n  \"contact_info\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"related_message_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"meta\": {\n    \"key_0\": 8024,\n    \"key_1\": 9965\n  },\n  \"content_format\": \"plain\",\n  \"interactive\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"header_media_url\": \"string\",\n  \"header_media_attachment_id\": \"string\",\n  \"external_id\": \"string\",\n  \"reply_to_external_id\": \"string\",\n  \"quoted_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"read_at\": \"string\",\n  \"is_internal\": true,\n  \"error_message\": \"string\",\n  \"error_code\": \"string\",\n  \"campaign\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"flow_run_id\": \"string\",\n  \"flow_step_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"edited_at\": \"string\",\n  \"previous_text\": \"string\",\n  \"revision_count\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a8372651-7ae9-425c-81b7-b624a3107f12","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog","send-product"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"product_retailer_id\": \"string\",\n  \"body\": \"string\",\n  \"footer\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8d11fcd7-65c3-4a07-811b-fbcb1de7c248","name":"Send Product List","request":{"name":"Send Product List","description":{"content":"Send a Multi-Product Message into a conversation.\n\nFail-closed on Coexistence numbers (409).\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-catalog","send-product-list"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"header_text\": \"string\",\n  \"body\": \"string\",\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8033dc2e-19d9-48e5-857b-9fffc6f96e72","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog","send-product-list"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"header_text\": \"string\",\n  \"body\": \"string\",\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"direction\": \"inbound\",\n  \"message_type\": \"file\",\n  \"status\": \"pending\",\n  \"created_at\": \"string\",\n  \"conversation_id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"platform\": \"string\",\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"contact_method_id\": \"string\",\n  \"contact_method\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"from\": \"string\",\n  \"to\": \"string\",\n  \"contact_info\": {\n    \"key_0\": \"string\",\n    \"key_1\": false\n  },\n  \"text\": \"string\",\n  \"attachments\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"related_message_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"meta\": {\n    \"key_0\": 8024,\n    \"key_1\": 9965\n  },\n  \"content_format\": \"plain\",\n  \"interactive\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"header_media_url\": \"string\",\n  \"header_media_attachment_id\": \"string\",\n  \"external_id\": \"string\",\n  \"reply_to_external_id\": \"string\",\n  \"quoted_message\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"sent_at\": \"string\",\n  \"delivered_at\": \"string\",\n  \"read_at\": \"string\",\n  \"is_internal\": true,\n  \"error_message\": \"string\",\n  \"error_code\": \"string\",\n  \"campaign\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"flow_run_id\": \"string\",\n  \"flow_step_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"edited_at\": \"string\",\n  \"previous_text\": \"string\",\n  \"revision_count\": 0\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"af1a0c83-bcf3-4aa9-95ab-c85903b4d728","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-catalog","send-product-list"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"conversation_id\": \"string\",\n  \"header_text\": \"string\",\n  \"body\": \"string\",\n  \"sections\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"footer\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"33015b07-e930-42a8-b9db-c94de03f28a4","name":"Contact Tokens","description":{"content":"","type":"text/plain"},"item":[{"id":"67b737b8-1ca1-47b2-b263-e4104e090e2d","name":"Create Contact Token","request":{"name":"Create Contact Token","description":{"content":"Create a contact token for the live chat widget\n\nMints a short-lived, opaque token (`s7ct_…`) for ONE contact that is\nredeemable only on `widget_id`. Pass it to the widget as\n`SendSevenConfig.contactToken`; the chat then starts bound to that contact\nand AI agents receive the exposed fields and `context` as verified data.\n\nContact resolution (first hit wins): `contact.external_id` mapping →\n`contact_id` → a contact holding one of the `methods` you mark\n`verified: true` (claims never match) → created when `create_if_missing`\nis true (requires `contacts:create`).\n\nMethods (`email`, `phone`, `whatsapp`) are attached to the contact;\n`verified: true` stores them as verified, `false` as an unverified claim\n(an already-verified method is never downgraded). A method held by a\ndifferent contact is a conflict: `on_conflict: \"error\"` (default) returns\n409 `identifier_conflict` and changes nothing; `on_conflict: \"merge\"`\nmerges those contacts into this one (only when your method is\n`verified: true` AND the other contact's copy is verified too; any other\nconflict is not attached and is listed in `skipped`). Merge requires\n`contacts:update`.\n\n`save` / `save_if_empty` write standard fields (`name`, `first_name`,\n`last_name`, `language`) or active custom fields to the contact now\n(`save_if_empty` only fills empty fields). `context` is shared with the\nchat only and never stored on the contact. Everything is one\ntransaction.\n\nLegacy shape: scalar `contact.email` / `contact.phone` and `expose` keep\nworking (`expose` is deprecated).\n\nThe token is returned **only in this response**.\n\nErrors: 403 `insufficient_scope`; 404 `widget_not_found` /\n`contact_not_found`; 409 `identifier_conflict` / `merge_failed`; 422\n`invalid_method_type`, `invalid_method_value`, `invalid_on_conflict`,\n`unknown_field`, `invalid_field_value`, `invalid_save`,\n`unknown_custom_field`, `unknown_standard_field`, `context_too_large`,\n`invalid_ttl`, `invalid_max_redemptions`, `invalid_contact`; 429\n`rate_limited` (120 per minute per credential and per workspace).\n\nHigh-privilege scope: not grantable to OAuth apps.\n\n**Required Scopes:** `contact_tokens:create`, `contacts:read` (+ `contacts:create` for `create_if_missing`, + `contacts:update` to change an existing contact: attach methods, link `external_id`, `save`, or `on_conflict: \"merge\"`)","type":"text/plain"},"url":{"path":["api","v1","contact-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact\": {\n    \"create_if_missing\": true,\n    \"external_id\": \"crm-123\",\n    \"methods\": [\n      {\n        \"type\": \"email\",\n        \"value\": \"anna@example.com\",\n        \"verified\": true\n      },\n      {\n        \"type\": \"whatsapp\",\n        \"value\": \"+4917012345678\",\n        \"verified\": false\n      }\n    ],\n    \"name\": \"Anna Weber\",\n    \"on_conflict\": \"error\"\n  },\n  \"context\": {\n    \"open_orders\": 2\n  },\n  \"save\": {\n    \"plan\": \"Scale\"\n  },\n  \"save_if_empty\": {\n    \"company\": \"Acme GmbH\"\n  },\n  \"ttl_seconds\": 600,\n  \"widget_id\": \"3f6c1d2e-8a1b-4c5d-9e0f-123456789abc\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"c8fae621-1302-4333-a853-6f3b2b8a2fb8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contact-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact\": {\n    \"create_if_missing\": true,\n    \"external_id\": \"crm-123\",\n    \"methods\": [\n      {\n        \"type\": \"email\",\n        \"value\": \"anna@example.com\",\n        \"verified\": true\n      },\n      {\n        \"type\": \"whatsapp\",\n        \"value\": \"+4917012345678\",\n        \"verified\": false\n      }\n    ],\n    \"name\": \"Anna Weber\",\n    \"on_conflict\": \"error\"\n  },\n  \"context\": {\n    \"open_orders\": 2\n  },\n  \"save\": {\n    \"plan\": \"Scale\"\n  },\n  \"save_if_empty\": {\n    \"company\": \"Acme GmbH\"\n  },\n  \"ttl_seconds\": 600,\n  \"widget_id\": \"3f6c1d2e-8a1b-4c5d-9e0f-123456789abc\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"token\": \"string\",\n  \"token_prefix\": \"string\",\n  \"widget_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"expires_at\": \"1990-07-13T19:49:30.837Z\",\n  \"grant_expires_in\": 403,\n  \"max_redemptions\": 9731,\n  \"created\": false,\n  \"merged_contact_ids\": [\n    \"string\",\n    \"string\"\n  ],\n  \"skipped\": [\n    {\n      \"key_0\": 135.8285736770748\n    },\n    {\n      \"key_0\": false\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f5f41547-6849-48ac-874a-1a6b8becf386","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contact-tokens"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact\": {\n    \"create_if_missing\": true,\n    \"external_id\": \"crm-123\",\n    \"methods\": [\n      {\n        \"type\": \"email\",\n        \"value\": \"anna@example.com\",\n        \"verified\": true\n      },\n      {\n        \"type\": \"whatsapp\",\n        \"value\": \"+4917012345678\",\n        \"verified\": false\n      }\n    ],\n    \"name\": \"Anna Weber\",\n    \"on_conflict\": \"error\"\n  },\n  \"context\": {\n    \"open_orders\": 2\n  },\n  \"save\": {\n    \"plan\": \"Scale\"\n  },\n  \"save_if_empty\": {\n    \"company\": \"Acme GmbH\"\n  },\n  \"ttl_seconds\": 600,\n  \"widget_id\": \"3f6c1d2e-8a1b-4c5d-9e0f-123456789abc\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7e42fafa-c795-4449-8a77-13a3a24e4114","name":"Revoke Contact Token","request":{"name":"Revoke Contact Token","description":{"content":"Revoke a contact token\n\nThe token can no longer be redeemed and every chat session context created\nfrom it stops being used immediately. Idempotent: revoking an already\nrevoked token succeeds.\n\n**Required Scopes:** `contact_tokens:create`","type":"text/plain"},"url":{"path":["api","v1","contact-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"a6e12d6b-6f8b-49e0-b29f-52ef0132683b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contact-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"acc9d29a-0e68-40a4-bff1-172cd78c7441","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contact-tokens",":token_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"token_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"63f149de-5ff5-4074-9d95-f632fc6cec5f","name":"Revoke Contact Tokens For Contact","request":{"name":"Revoke Contact Tokens For Contact","description":{"content":"Revoke all contact tokens of a contact\n\nUse it on logout or when a user's access changes. Every unrevoked token of\nthe contact is revoked and their chat session context stops being used.\n\n**Required Scopes:** `contact_tokens:create`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","contact-tokens","revoke"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"b08767e2-c42c-45e2-b0bd-f4d4878dd32c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","contact-tokens","revoke"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"revoked\": 9203,\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7d6bd50e-5dc3-4d04-8c23-a0c28d2e6b4c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","contact-tokens","revoke"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"bd28f060-f9ca-4520-a580-65ca31b6ea81","name":"Context Endpoints","description":{"content":"","type":"text/plain"},"item":[{"id":"b44de939-4748-42d2-b3a7-ad50816eff39","name":"List Context Endpoints","request":{"name":"List Context Endpoints","description":{"content":"List context endpoints (signing secrets are never included, only a 4-char hint)\n\n**Required Scopes:** `settings:read`","type":"text/plain"},"url":{"path":["api","v1","context-endpoints"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e1dd234f-1c69-4178-8707-2db9f43df809","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"424c5c19-6d14-45a7-8ff8-46cca75a58cf","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"6a02570c-c5b2-4c8a-921a-36f34676f90e","name":"Create Context Endpoint","request":{"name":"Create Context Endpoint","description":{"content":"Create a context endpoint. The response contains the signing secret ONCE.\n\n`timeout_ms` is clamped to 200-3000, `ttl_seconds` to 0-3600. The URL must\nbe https and must not point to a private network.\n\n**Required Scopes:** `settings:update` (not available to OAuth apps)","type":"text/plain"},"url":{"path":["api","v1","context-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"stringstring\",\n  \"timeout_ms\": 4214,\n  \"ttl_seconds\": 1766,\n  \"response_map\": {\n    \"key_0\": \"string\",\n    \"key_1\": 9493.986983213284\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"cbded910-649b-41af-b7ba-3c55fa0dba16","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"stringstring\",\n  \"timeout_ms\": 4214,\n  \"ttl_seconds\": 1766,\n  \"response_map\": {\n    \"key_0\": \"string\",\n    \"key_1\": 9493.986983213284\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"timeout_ms\": 5923,\n  \"ttl_seconds\": 3847,\n  \"is_enabled\": false,\n  \"has_secret\": false,\n  \"secret\": \"string\",\n  \"response_map\": {\n    \"key_0\": false,\n    \"key_1\": 6020,\n    \"key_2\": false\n  },\n  \"secret_hint\": \"string\",\n  \"created_by\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a45ed494-0b24-4756-b5f1-6bf18ff5f82f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"stringstring\",\n  \"timeout_ms\": 4214,\n  \"ttl_seconds\": 1766,\n  \"response_map\": {\n    \"key_0\": \"string\",\n    \"key_1\": 9493.986983213284\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9229a41b-99f4-4a89-988d-7aa945d8b07c","name":"Get Context Endpoint","request":{"name":"Get Context Endpoint","description":{"content":"Get one context endpoint (without its secret)\n\n**Required Scopes:** `settings:read`","type":"text/plain"},"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f90daa0c-145c-439d-846c-51630fb6b683","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"timeout_ms\": 5649,\n  \"ttl_seconds\": 125,\n  \"is_enabled\": true,\n  \"has_secret\": true,\n  \"response_map\": {\n    \"key_0\": false\n  },\n  \"secret_hint\": \"string\",\n  \"created_by\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"36a65df1-7281-479c-b9f5-45ee2cee977c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a81e3b1a-5e28-4fe0-ad53-25741bc37a47","name":"Update Context Endpoint","request":{"name":"Update Context Endpoint","description":{"content":"Update a context endpoint (partial; `response_map: null` clears the map)\n\nChanging `url` also requires `contacts:read`, is not available to OAuth\napps, and ROTATES the signing secret: the response then contains the new\n`secret` (shown once). Without a URL change no `secret` is returned.\n\n**Required Scopes:** `settings:update` (+ `contacts:read` when `url` changes)","type":"text/plain"},"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"stringstring\",\n  \"timeout_ms\": 4125,\n  \"ttl_seconds\": 2805,\n  \"response_map\": {\n    \"key_0\": 1261.77982014108\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"eb50d622-e0aa-4998-b49d-17913da27a67","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"stringstring\",\n  \"timeout_ms\": 4125,\n  \"ttl_seconds\": 2805,\n  \"response_map\": {\n    \"key_0\": 1261.77982014108\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"url\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"timeout_ms\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"ttl_seconds\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"is_enabled\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"has_secret\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"secret\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"response_map\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"secret_hint\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"created_by\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"created_at\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"updated_at\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f29a32a8-4cf3-44f7-95d0-7cf509b96ba9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"url\": \"stringstring\",\n  \"timeout_ms\": 4125,\n  \"ttl_seconds\": 2805,\n  \"response_map\": {\n    \"key_0\": 1261.77982014108\n  },\n  \"is_enabled\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"788a9356-71ce-4467-acb4-cf9aedca6142","name":"Delete Context Endpoint","request":{"name":"Delete Context Endpoint","description":{"content":"Delete a context endpoint. Agents using it stop calling it immediately.\n\n**Required Scopes:** `settings:update`","type":"text/plain"},"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"e5f60b5a-d682-453b-8400-2bdf54cb35b1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"128d826d-73db-4f14-9c7c-952d30799848","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"227d079f-5af4-4435-a358-affab4b194ce","name":"Rotate Context Endpoint Secret","request":{"name":"Rotate Context Endpoint Secret","description":{"content":"Generate a new signing secret. The old secret stops working immediately.\n\n**Required Scopes:** `settings:update` (not available to OAuth apps)","type":"text/plain"},"url":{"path":["api","v1","context-endpoints",":endpoint_id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"a8d23cdc-eaf2-4900-bcd6-f3759f9f8474","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"name\": \"string\",\n  \"url\": \"string\",\n  \"timeout_ms\": 5923,\n  \"ttl_seconds\": 3847,\n  \"is_enabled\": false,\n  \"has_secret\": false,\n  \"secret\": \"string\",\n  \"response_map\": {\n    \"key_0\": false,\n    \"key_1\": 6020,\n    \"key_2\": false\n  },\n  \"secret_hint\": \"string\",\n  \"created_by\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ef3c08b8-cabc-4366-8834-6e82b82aef90","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4e12635f-5af7-4016-a85c-d1766d2af3ee","name":"Test Context Endpoint","request":{"name":"Test Context Endpoint","description":{"content":"Call the endpoint once (no cache) for a contact and return what the agent\nwould see after the response map, plus the request body that was sent.\nWorks on disabled endpoints too.\n\n**Required Scopes:** `settings:update` + `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","context-endpoints",":endpoint_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"97e046a6-e19f-422b-a725-25d96382f386","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"ok\": true,\n  \"error_code\": \"string\",\n  \"data\": {\n    \"key_0\": true,\n    \"key_1\": true,\n    \"key_2\": 4540,\n    \"key_3\": 9880\n  },\n  \"request_payload\": {\n    \"key_0\": \"string\",\n    \"key_1\": \"string\",\n    \"key_2\": 1698.681026568377\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0e76c58c-b9f6-4d05-9208-e0126ceb1b60","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","context-endpoints",":endpoint_id","test"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"endpoint_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"28c31277-da41-4708-9831-40bf901808f8","name":"Contact Verification","description":{"content":"","type":"text/plain"},"item":[{"id":"cc54d7e6-5135-4784-86f9-ad28ac61a005","name":"Create Verification","request":{"name":"Create Verification","description":{"content":"Start a contact verification\n\nSends a 6-digit one-time code (method `email`, `sms` or `whatsapp`) or\nopens a PIN check (method `pin`, nothing is sent). Pass exactly one of\n`contact_id` or `identifier`.\n\nThe code always goes to a contact method **on record**: with `contact_id`\nto that contact's matching method (verified first, then primary, then\nnewest); with an `identifier` that belongs to a contact, to that stored\nmethod. An identifier that is not on record receives the code itself\n(proof of possession) and is attached as a verified method on approval.\nThe response never contains the destination.\n\nCodes are valid for 10 minutes and allow 5 attempts. Each code sent is\nbilled as one message on its channel.\n\n**PIN self-unlock** (`purpose: \"pin_unlock\"`): when a contact's PIN is\nlocked until reset (3 lockouts within 24 hours), send a code to one of\nthe contact's **verified** email addresses or phone numbers. Use method\n`email`, `sms`, `whatsapp` or `pin_unlock_auto` (picks email, then SMS,\nthen WhatsApp). An `identifier` only selects the contact; the code is\nnever sent to it. Approving the code unlocks the PIN and fires\n`contact_pin.self_unlocked`; it does not verify identity. Errors: 409\n`pin_not_locked`, 409 `no_verified_method`.\n\nErrors: 404 `contact_not_found` / `conversation_not_found`; 422\n`invalid_request`, `invalid_identifier`, `method_identifier_mismatch`,\n`method_not_enabled`, `no_method_on_record`, `destination_not_allowed`\n(with `reason`: `country_not_allowed`, `not_mobile` or `invalid_number`;\nSMS codes go only to mobile numbers in your allowed countries within the\nEU/EEA, WhatsApp codes to numbers in your allowed countries);\n402 `insufficient_sms_balance`;\n409 `no_whatsapp_auth_template` / `channel_unavailable`; 429 `rate_limited`;\n502 `send_failed` (the claim is `failed`).\n\n**Required Scopes:** `verifications:create`","type":"text/plain"},"url":{"path":["api","v1","verifications"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"method\": \"pin_unlock_auto\",\n  \"contact_id\": \"string\",\n  \"identifier\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"purpose\": \"identity\",\n  \"conversation_id\": \"string\",\n  \"sender\": \"tenant\",\n  \"channel_id\": \"string\",\n  \"locale\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"64166b83-3a0a-4ab2-9d04-09d2cd8b2848","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verifications"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"method\": \"pin_unlock_auto\",\n  \"contact_id\": \"string\",\n  \"identifier\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"purpose\": \"identity\",\n  \"conversation_id\": \"string\",\n  \"sender\": \"tenant\",\n  \"channel_id\": \"string\",\n  \"locale\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"method\": \"string\",\n  \"purpose\": \"identity\",\n  \"expires_at\": \"string\",\n  \"resend_available_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"attempts_remaining\": 0,\n  \"resend_count\": 0,\n  \"conversation_id\": \"string\",\n  \"source\": \"string\",\n  \"approved_at\": \"string\",\n  \"created_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b89d45f6-94aa-4c67-9382-d408e5041203","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verifications"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"method\": \"pin_unlock_auto\",\n  \"contact_id\": \"string\",\n  \"identifier\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"purpose\": \"identity\",\n  \"conversation_id\": \"string\",\n  \"sender\": \"tenant\",\n  \"channel_id\": \"string\",\n  \"locale\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"21a04497-0bc8-40c6-890b-c33a2d267d7c","name":"Check Verification","request":{"name":"Check Verification","description":{"content":"Check a verification code or PIN\n\nReturns `approved`, `pending` (wrong code, with fewer `attempts_remaining`),\n`expired` or `locked` (after the 5th wrong attempt). Checking is free.\nSend `code` for email/SMS/WhatsApp verifications and `pin` for PIN checks.\n\n**Required Scopes:** `verifications:create`","type":"text/plain"},"url":{"path":["api","v1","verifications",":verification_id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"code\": \"string\",\n  \"pin\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f55dfa5b-a3c4-4e4a-8c85-ca87abc25987","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"code\": \"string\",\n  \"pin\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"attempts_remaining\": 4366,\n  \"contact_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d0033cc9-4b58-496e-ba96-4f3f7b370fea","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id","check"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"code\": \"string\",\n  \"pin\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5806fcdd-1192-41c2-a761-b1bea6b9728a","name":"Resend Verification","request":{"name":"Resend Verification","description":{"content":"Resend a new code for the same verification\n\nAllowed 60 seconds after the last send, at most 5 times. A resend issues\na new code (the old one stops working) and restarts the 10-minute\nvalidity.\n\nErrors: 429 `resend_too_soon` (with `retry_after`), 409\n`resend_limit_reached`, 409 `not_pending`, 429 `rate_limited`, 422\n`destination_not_allowed` (with `reason`, when the allowed countries\nchanged since the code was first sent).\n\n**Required Scopes:** `verifications:create`","type":"text/plain"},"url":{"path":["api","v1","verifications",":verification_id","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"4438a861-6d05-406b-8d39-925dd0d4c196","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"method\": \"string\",\n  \"purpose\": \"identity\",\n  \"expires_at\": \"string\",\n  \"resend_available_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"attempts_remaining\": 0,\n  \"resend_count\": 0,\n  \"conversation_id\": \"string\",\n  \"source\": \"string\",\n  \"approved_at\": \"string\",\n  \"created_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"53e7371a-62d6-4d66-962f-5ac74c9ae76b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id","resend"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"2a404142-e379-4637-bf37-65345807b1d5","name":"Cancel Verification","request":{"name":"Cancel Verification","description":{"content":"Cancel a pending verification\n\n**Required Scopes:** `verifications:create`","type":"text/plain"},"url":{"path":["api","v1","verifications",":verification_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"6e3b9853-ae55-48e1-a70c-c9f3f3ab63a5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"method\": \"string\",\n  \"purpose\": \"identity\",\n  \"expires_at\": \"string\",\n  \"resend_available_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"attempts_remaining\": 0,\n  \"resend_count\": 0,\n  \"conversation_id\": \"string\",\n  \"source\": \"string\",\n  \"approved_at\": \"string\",\n  \"created_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"da551c0d-0342-4eb7-9249-5d1c8174b13d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"772f7e10-3b13-4f87-972b-891233a8d420","name":"Get Verification","request":{"name":"Get Verification","description":{"content":"Get a verification's status\n\n**Required Scopes:** `verifications:read`","type":"text/plain"},"url":{"path":["api","v1","verifications",":verification_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"774821e1-812a-4364-b20f-97f764951f63","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"status\": \"string\",\n  \"method\": \"string\",\n  \"purpose\": \"identity\",\n  \"expires_at\": \"string\",\n  \"resend_available_at\": \"string\",\n  \"contact_id\": \"string\",\n  \"attempts_remaining\": 0,\n  \"resend_count\": 0,\n  \"conversation_id\": \"string\",\n  \"source\": \"string\",\n  \"approved_at\": \"string\",\n  \"created_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bfe970c4-a763-438f-a655-27f7ac957f6b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verifications",":verification_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"verification_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e71ba1e6-50e9-45fa-8649-a491f04d31ac","name":"Get Verification Settings","request":{"name":"Get Verification Settings","description":{"content":"Get contact verification settings\n\n`enabled_methods` defaults to `[\"email\"]`. `allowed_countries` is the\neffective list of destination countries for SMS and WhatsApp codes (the\nworkspace country unless you set a list); `sms_country_cap` lists the\ncountries SMS codes can ever reach (EU/EEA) and `eu_countries` the EU\nmember states.\n\n**Required Scopes:** `settings:read`","type":"text/plain"},"url":{"path":["api","v1","verification-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2fe70ade-fdc6-45d6-b56b-c6182470cb7f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verification-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"email_sender\": \"string\",\n  \"sms_sender\": \"string\",\n  \"enabled_methods\": [\n    \"string\",\n    \"string\"\n  ],\n  \"whatsapp_channel_id\": \"string\",\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_status\": \"string\",\n  \"allowed_countries\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_countries_is_default\": true,\n  \"sms_country_cap\": [\n    \"string\",\n    \"string\"\n  ],\n  \"eu_countries\": [\n    \"string\",\n    \"string\"\n  ],\n  \"agent_new_number_daily_cap\": 10,\n  \"agent_new_number_daily_cap_is_default\": true,\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f7add224-229b-4087-8263-96d3c3677c72","name":"Update Verification Settings","request":{"name":"Update Verification Settings","description":{"content":"Update contact verification settings\n\nFields you omit are kept. `email_sender` is `generic` or an active mailbox id; `sms_sender` is `generic` or\nan active channel id of that type. `allowed_countries` takes ISO 3166 alpha-2 codes (`null` resets to\nthe workspace country); codes outside the EU/EEA only apply to WhatsApp.\n`agent_new_number_daily_cap` (0-200, `null` = default 10, 0 = none) limits how many codes the AI\nagent may send per day to phone numbers that are not on file. Errors: 422\n`invalid_email_sender`, `invalid_channel`, `invalid_template`, `invalid_enabled_methods`,\n`invalid_allowed_countries`, `invalid_agent_new_number_daily_cap`.\n\n**Required Scopes:** `verification_settings:update`","type":"text/plain"},"url":{"path":["api","v1","verification-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"email_sender\": \"string\",\n  \"sms_sender\": \"string\",\n  \"whatsapp_channel_id\": \"string\",\n  \"whatsapp_template_id\": \"string\",\n  \"enabled_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_countries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"agent_new_number_daily_cap\": 108\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3fb65f20-54f9-4adb-8f71-91fcf51871c7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verification-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"email_sender\": \"string\",\n  \"sms_sender\": \"string\",\n  \"whatsapp_channel_id\": \"string\",\n  \"whatsapp_template_id\": \"string\",\n  \"enabled_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_countries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"agent_new_number_daily_cap\": 75\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"email_sender\": \"string\",\n  \"sms_sender\": \"string\",\n  \"enabled_methods\": [\n    \"string\",\n    \"string\"\n  ],\n  \"whatsapp_channel_id\": \"string\",\n  \"whatsapp_template_id\": \"string\",\n  \"whatsapp_template_name\": \"string\",\n  \"whatsapp_template_status\": \"string\",\n  \"allowed_countries\": [\n    \"string\",\n    \"string\"\n  ],\n  \"allowed_countries_is_default\": true,\n  \"sms_country_cap\": [\n    \"string\",\n    \"string\"\n  ],\n  \"eu_countries\": [\n    \"string\",\n    \"string\"\n  ],\n  \"agent_new_number_daily_cap\": 10,\n  \"agent_new_number_daily_cap_is_default\": true,\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"aabe0bcf-119a-4762-9f69-a7eb59948c5d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verification-settings"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"email_sender\": \"string\",\n  \"sms_sender\": \"string\",\n  \"whatsapp_channel_id\": \"string\",\n  \"whatsapp_template_id\": \"string\",\n  \"enabled_methods\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"allowed_countries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"agent_new_number_daily_cap\": 75\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"63fd5154-6788-438e-a413-6ca9e7da6add","name":"Create Whatsapp Auth Template","request":{"name":"Create Whatsapp Auth Template","description":{"content":"Create a WhatsApp authentication template for verification codes\n\nSubmits a compliant AUTHENTICATION template (copy-code button, security\nrecommendation, 10-minute expiry) to Meta for the WhatsApp channel and\nstores it in the settings. Meta reviews it; codes can be sent once it is\napproved.\n\n**Required Scopes:** `verification_settings:update`","type":"text/plain"},"url":{"path":["api","v1","verification-settings","whatsapp-template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"language\": \"en\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"68c653bf-5841-4f82-9868-4b37d624273a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","verification-settings","whatsapp-template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"language\": \"en\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"whatsapp_template_id\": \"string\",\n  \"template_id\": \"string\",\n  \"name\": \"string\",\n  \"status\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"98e71b37-7393-441b-8166-5eb1504b3548","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","verification-settings","whatsapp-template"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"language\": \"en\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ae9618bb-41ff-4688-8963-97d6452f9e75","name":"Get Contact Pin Status","request":{"name":"Get Contact Pin Status","description":{"content":"Get a contact's PIN status (never the PIN itself)\n\nReturns `{is_set, locked, locked_until, escalated, set_at}`. After 5 wrong\nPINs in a row the PIN is locked for 1 hour (`locked_until`) and unlocks\nautomatically; the 3rd lock within 24 hours sets `escalated` and the PIN\nstays locked until it is reset.\n\n**Required Scopes:** `contact_pins:manage` or `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"ad3ed266-afd1-499b-a2e2-798bd5999983","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"is_set\": false,\n  \"locked\": true,\n  \"locked_until\": \"string\",\n  \"escalated\": false,\n  \"set_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1d3292c7-8635-4c5e-811b-f1f90ee10059","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"054d407e-665b-45ac-8397-769bc479669f","name":"Set Contact Pin","request":{"name":"Set Contact Pin","description":{"content":"Set or replace a contact's identification PIN\n\n4 to 12 digits. Replacing a PIN also clears a lockout. Error: 422 `invalid_pin`.\n\n**Required Scopes:** `contact_pins:manage`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"pin\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"44f9826b-a85e-49aa-838c-499229fd1e91","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"pin\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"231bdd4b-34be-40a0-b96b-e99f4b0cbb78","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PUT","body":{"mode":"raw","raw":"{\n  \"pin\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"d7435035-e0da-418f-9049-36a8ee651b9d","name":"Delete Contact Pin","request":{"name":"Delete Contact Pin","description":{"content":"Remove a contact's PIN\n\nError: 404 `pin_not_set`.\n\n**Required Scopes:** `contact_pins:manage`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"0b691132-a1ca-4c67-8567-ba151a722aa8","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b886e04c-6f3c-4a55-8f8d-0ce0cb18d4fb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f8df2216-6f0c-4edb-bb7c-1d17ecfefebb","name":"Reset Contact Pin Lockout","request":{"name":"Reset Contact Pin Lockout","description":{"content":"Reset a PIN lockout (temporary or escalated)\n\nClears the lock, the failed-attempt counter and the 24-hour lockout history.\n\nError: 404 `pin_not_set`.\n\n**Required Scopes:** `contact_pins:manage`","type":"text/plain"},"url":{"path":["api","v1","contacts",":contact_id","pin","reset-lockout"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"11e1a1cd-d0ce-44a2-abbe-ec3a823f8320","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin","reset-lockout"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"134de4b8-955c-4e8f-a898-a11849abcb5b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","contacts",":contact_id","pin","reset-lockout"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"contact_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"9db16616-3b1f-4aa9-b7ad-ecffd17b120f","name":"Media Gallery","description":{"content":"","type":"text/plain"},"item":[{"id":"af3b8beb-7965-470b-a05d-e41bedffd1ce","name":"List Media Assets","request":{"name":"List Media Assets","description":{"content":"List gallery assets (excludes archived by default).\n\nReturns the unified ``{items, pagination}`` shape. Each item carries BOTH\nthe durable ``attachment_id`` and a fresh ``url``. Every filter —\n``archived``, ``favorites_only``, ``media_type``, ``tag`` and ``query``\nsearch — composes with AND and with pagination (e.g.\n``?archived=only&favorites_only=true`` = archived favorites).\n\n**Required Scopes:** `media_gallery:read`","type":"text/plain"},"url":{"path":["api","v1","media-gallery"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"query","value":"string","description":"Match display_name or description"},{"disabled":false,"key":"tag","value":"string","description":"Filter by tag. Repeat the param for multi-tag AND (asset must carry every tag), e.g. ?tag=logo&tag=2024."},{"disabled":false,"key":"tag","value":"string","description":"Filter by tag. Repeat the param for multi-tag AND (asset must carry every tag), e.g. ?tag=logo&tag=2024."},{"disabled":false,"key":"media_type","value":"string","description":"Filter by media type: image | video | document"},{"disabled":false,"key":"favorites_only","value":"false","description":"When true, return only assets marked as favorite."},{"disabled":false,"key":"archived","value":"active","description":"Archive-status view: 'active' (default) = non-archived only (unchanged behavior); 'only' = archived-only (the dedicated Archived tab, for recovering an accidentally-archived asset); 'all' = unified active + archived."},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"0dd25ddf-b5da-44b1-94b2-75e515b16c65","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery"],"host":["{{baseUrl}}"],"query":[{"key":"query","value":"string"},{"key":"tag","value":"string"},{"key":"tag","value":"string"},{"key":"media_type","value":"string"},{"key":"favorites_only","value":"false"},{"key":"archived","value":"active"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4e091a67-84b1-4fd0-8ba2-b223543dd2f8","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery"],"host":["{{baseUrl}}"],"query":[{"key":"query","value":"string"},{"key":"tag","value":"string"},{"key":"tag","value":"string"},{"key":"media_type","value":"string"},{"key":"favorites_only","value":"false"},{"key":"archived","value":"active"},{"key":"page","value":"1"},{"key":"page_size","value":"20"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"dbff2574-dad2-41ad-ad31-0ad6238679e3","name":"Create Media Asset","request":{"name":"Create Media Asset","description":{"content":"Save an already-stored attachment into the gallery.\n\nRe-verifies the attachment belongs to the caller's tenant before insert\n(never trusts a client-supplied ``attachment_id``); derives\n``media_type``/``content_type``/``file_size`` from the attachment and\nvalidates the type/size caps.\n\n**Required Scopes:** `media_gallery:create`","type":"text/plain"},"url":{"path":["api","v1","media-gallery"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"attachment_id\": \"string\",\n  \"display_name\": \"string\",\n  \"description\": \"string\",\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"4149095b-b2e8-47d9-8443-ae72d77365d2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"attachment_id\": \"string\",\n  \"display_name\": \"string\",\n  \"description\": \"string\",\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"attachment_id\": \"string\",\n  \"url\": \"string\",\n  \"display_name\": \"string\",\n  \"media_type\": \"string\",\n  \"content_type\": \"string\",\n  \"created_at\": \"1992-06-14T00:16:12.553Z\",\n  \"thumbnail_url\": \"string\",\n  \"description\": \"string\",\n  \"file_size\": 9166,\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_favorite\": false,\n  \"last_used_at\": \"1970-04-14T03:22:16.073Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bffb0a55-8c30-4292-8ce3-e20edbf0e78d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"attachment_id\": \"string\",\n  \"display_name\": \"string\",\n  \"description\": \"string\",\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"44ec953c-379e-4cf8-8461-fdd214911d60","name":"Update Media Asset","request":{"name":"Update Media Asset","description":{"content":"Update a gallery asset. Providing ``tags`` REPLACES the full tag set.\n\n**Required Scopes:** `media_gallery:update`","type":"text/plain"},"url":{"path":["api","v1","media-gallery",":asset_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"description\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_archived\": true,\n  \"is_favorite\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a676bceb-8e76-4f72-8955-6af36b50b2c6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"description\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_archived\": false,\n  \"is_favorite\": true\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"attachment_id\": \"string\",\n  \"url\": \"string\",\n  \"display_name\": \"string\",\n  \"media_type\": \"string\",\n  \"content_type\": \"string\",\n  \"created_at\": \"1992-06-14T00:16:12.553Z\",\n  \"thumbnail_url\": \"string\",\n  \"description\": \"string\",\n  \"file_size\": 9166,\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_favorite\": false,\n  \"last_used_at\": \"1970-04-14T03:22:16.073Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cff509e5-9626-453f-b120-6e1b8f285667","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"display_name\": \"string\",\n  \"description\": \"string\",\n  \"tags\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"is_archived\": false,\n  \"is_favorite\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7c128468-fce1-4f65-8d64-dc487845a751","name":"Delete Media Asset","request":{"name":"Delete Media Asset","description":{"content":"Hard-delete a gallery asset (tags cascade). The underlying attachment is\nNOT deleted.\n\n**Required Scopes:** `media_gallery:delete`","type":"text/plain"},"url":{"path":["api","v1","media-gallery",":asset_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"8bc2fd94-fc62-407f-a9e9-f203441baf5d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0e0a66bd-6919-4f76-a8b4-438bfdf4a513","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3f97cd2d-c108-415f-9b50-d13bb7770623","name":"Favorite Media Asset","request":{"name":"Favorite Media Asset","description":{"content":"Mark a gallery asset as a favorite (idempotent one-tap toggle).\n\nReturns the updated asset. Surface favorites via the list endpoint's\n``?favorites_only=true`` filter.\n\n**Required Scopes:** `media_gallery:update`","type":"text/plain"},"url":{"path":["api","v1","media-gallery",":asset_id","favorite"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"f4b99cae-b99a-49b1-b471-597a5b92b68f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id","favorite"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"attachment_id\": \"string\",\n  \"url\": \"string\",\n  \"display_name\": \"string\",\n  \"media_type\": \"string\",\n  \"content_type\": \"string\",\n  \"created_at\": \"1992-06-14T00:16:12.553Z\",\n  \"thumbnail_url\": \"string\",\n  \"description\": \"string\",\n  \"file_size\": 9166,\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_favorite\": false,\n  \"last_used_at\": \"1970-04-14T03:22:16.073Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5d490ea4-0ef7-4b00-82fd-e25f6a9cee65","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id","favorite"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"06507219-482e-44f3-bc53-d515dd77543c","name":"Unfavorite Media Asset","request":{"name":"Unfavorite Media Asset","description":{"content":"Remove a gallery asset's favorite mark (idempotent one-tap toggle).\n\nReturns the updated asset.\n\n**Required Scopes:** `media_gallery:update`","type":"text/plain"},"url":{"path":["api","v1","media-gallery",":asset_id","favorite"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"1e1d802f-e44f-45a4-92ee-51d01bf7e50d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id","favorite"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"attachment_id\": \"string\",\n  \"url\": \"string\",\n  \"display_name\": \"string\",\n  \"media_type\": \"string\",\n  \"content_type\": \"string\",\n  \"created_at\": \"1992-06-14T00:16:12.553Z\",\n  \"thumbnail_url\": \"string\",\n  \"description\": \"string\",\n  \"file_size\": 9166,\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_favorite\": false,\n  \"last_used_at\": \"1970-04-14T03:22:16.073Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2eddffd3-7b6f-42c9-a194-c901e83ce7d9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id","favorite"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"97d249e6-c4bc-4ba2-8247-c7d457e6d338","name":"Request Media Thumbnail","request":{"name":"Request Media Thumbnail","description":{"content":"Lazily generate a thumbnail for an asset that has none (generate-on-view).\n\nIdempotent and cheap: if the asset already has a thumbnail (or is a\ndocument) this just returns it. Otherwise it de-dupes concurrent callers\n(Redis claim) and enqueues a single background generation job, returning the\nasset immediately with its current ``url`` — the generated ``thumbnail_url``\nappears on the next list/refresh. Safe for the gallery/picker to call once\nper visible thumbnail-less card.\n\n**Required Scopes:** `media_gallery:read`","type":"text/plain"},"url":{"path":["api","v1","media-gallery",":asset_id","thumbnail"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"805e9970-4a5e-4076-9560-242b91164f6b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id","thumbnail"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"attachment_id\": \"string\",\n  \"url\": \"string\",\n  \"display_name\": \"string\",\n  \"media_type\": \"string\",\n  \"content_type\": \"string\",\n  \"created_at\": \"1992-06-14T00:16:12.553Z\",\n  \"thumbnail_url\": \"string\",\n  \"description\": \"string\",\n  \"file_size\": 9166,\n  \"tags\": [\n    \"string\",\n    \"string\"\n  ],\n  \"is_favorite\": false,\n  \"last_used_at\": \"1970-04-14T03:22:16.073Z\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d76721cd-dc97-4a4e-9fe8-dcad527e2604","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","media-gallery",":asset_id","thumbnail"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"asset_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"ea54715d-2112-4303-bdf1-bfb15c13281e","name":"WhatsApp Flows","description":{"content":"","type":"text/plain"},"item":[{"id":"4986d855-e8f1-4bc7-b2e0-834eec7ee3ee","name":"Estimate Ai Generation","request":{"name":"Estimate Ai Generation","description":{"content":"AI credits a generation will cost — shown before the user confirms.\n\n**🔐 Required Scopes:** `whatsapp_flows:write`\n","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","ai","estimate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8f8e70fe-df96-466f-8325-d7d5174de20d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","estimate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"dynamic_allowed\": false,\n  \"credits\": 5995,\n  \"price_euros\": \"string\",\n  \"billable\": true,\n  \"refine_credits\": 1726,\n  \"max_repair_rounds\": 3122,\n  \"charged_on\": \"valid_generation\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d9667a57-1a3e-4c42-900e-74161f041846","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","estimate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9d6310ba-916a-49c5-8cdb-50b8eee764d7","name":"Generate Flow","request":{"name":"Generate Flow","description":{"content":"Queue a generation from a description. Poll ``/jobs/{job_id}``. Does NOT save a flow.\n\n**🔐 Required Scopes:** `whatsapp_flows:write`\n","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","ai","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"string\",\n  \"language\": \"string\",\n  \"channel_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"request_id\": \"UIUIUIUI\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2c88561f-041c-426e-8d27-9008d5b990e0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"string\",\n  \"language\": \"string\",\n  \"channel_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"request_id\": \"UIUIUIUI\"\n}","options":{"raw":{"language":"json"}}}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"kind\": \"string\",\n  \"status\": \"string\",\n  \"stage\": \"string\",\n  \"repair_round\": 0,\n  \"result\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"error\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"request_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"409ca76a-a23c-4f5f-b213-c012ca0e54a2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","generate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"description\": \"string\",\n  \"language\": \"string\",\n  \"channel_id\": \"string\",\n  \"flow_name\": \"string\",\n  \"request_id\": \"UIUIUIUI\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5a5048e7-f764-4b01-8850-d647f12cc980","name":"Refine Flow","request":{"name":"Refine Flow","description":{"content":"Queue a rewrite of one screen (or one component); the rest of the doc stays frozen.\n\n**🔐 Required Scopes:** `whatsapp_flows:write`\n","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","ai","refine"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": 8430\n  },\n  \"instruction\": \"string\",\n  \"target\": {\n    \"screen_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"component_index\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"language\": \"string\",\n  \"channel_id\": \"string\",\n  \"request_id\": \"w4ib2w4ib2\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"b7a39c03-c90f-4900-ab85-a73581ba1d1f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","refine"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": 8430\n  },\n  \"instruction\": \"string\",\n  \"target\": {\n    \"screen_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"component_index\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"language\": \"string\",\n  \"channel_id\": \"string\",\n  \"request_id\": \"w4ib2w4ib2\"\n}","options":{"raw":{"language":"json"}}}},"status":"Accepted","code":202,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"kind\": \"string\",\n  \"status\": \"string\",\n  \"stage\": \"string\",\n  \"repair_round\": 0,\n  \"result\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"error\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"request_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5a030db6-89e1-4a13-9970-ac58262a85bd","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","refine"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": 8430\n  },\n  \"instruction\": \"string\",\n  \"target\": {\n    \"screen_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"component_index\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"language\": \"string\",\n  \"channel_id\": \"string\",\n  \"request_id\": \"w4ib2w4ib2\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fab46e17-4a1b-42ab-9f65-1a3157f90af9","name":"Get Ai Job","request":{"name":"Get Ai Job","description":{"content":"Poll a generate/refine job (kept 24h). Another workspace's job is a 404.\n\n**🔐 Required Scopes:** `whatsapp_flows:write`\n","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","ai","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"03b6674d-618c-4d25-8c2e-229174ff1606","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"kind\": \"string\",\n  \"status\": \"string\",\n  \"stage\": \"string\",\n  \"repair_round\": 0,\n  \"result\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"error\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"request_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"98d4952e-efb8-4c11-af3f-0204b280e029","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","jobs",":job_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8f36d54f-e6d4-40e1-bb78-df97e54351b8","name":"Cancel Ai Job","request":{"name":"Cancel Ai Job","description":{"content":"Cancel a queued/running generate/refine job (works from any pod).\n\nAn active job becomes ``failed`` with ``error.code = \"cancelled\"`` and is\nnever charged; no further AI calls or repair rounds start. Idempotent. A job\nthat already finished (or is committing its result) is returned unchanged —\na succeeded job stays succeeded. Another workspace's job is a 404.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","ai","jobs",":job_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"53133baf-0959-4920-9c11-21e48be0bebd","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","jobs",":job_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"job_id\": \"string\",\n  \"kind\": \"string\",\n  \"status\": \"string\",\n  \"stage\": \"string\",\n  \"repair_round\": 0,\n  \"result\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"error\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"request_id\": \"string\",\n  \"created_at\": \"string\",\n  \"updated_at\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7eb12d32-7fd6-44bc-8158-6c2e09b35265","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","ai","jobs",":job_id","cancel"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"job_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"daf4cede-7c55-4771-907d-57421ed7fd01","name":"List Wa Flow Templates","request":{"name":"List Wa Flow Templates","description":{"content":"List SendSeven starter flow templates (envelopes without ``builder_doc``).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","templates"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"lang","value":"string","description":"de | en (default: de)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"5efa839d-e311-4d81-ad02-7066f57241f7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","templates"],"host":["{{baseUrl}}"],"query":[{"key":"lang","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"903804ad-8615-4b8e-98e7-260837088a6b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","templates"],"host":["{{baseUrl}}"],"query":[{"key":"lang","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3f57e911-408e-43a6-876c-4456fad4a598","name":"Get Wa Flow Template","request":{"name":"Get Wa Flow Template","description":{"content":"Full template envelope incl. ``builder_doc`` and ``placeholders``.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","templates",":key"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"lang","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"key","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b489218e-1df9-41e8-9489-13cccae76cbe","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","templates",":key"],"host":["{{baseUrl}}"],"query":[{"key":"lang","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"key","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"7deb445d-82db-4c9b-8358-b98977fc0d2f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","templates",":key"],"host":["{{baseUrl}}"],"query":[{"key":"lang","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"key","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e1b5c3a7-fd1e-4563-a46f-be2db9959cc2","name":"List Publish Targets","request":{"name":"List Publish Targets","description":{"content":"Active WhatsApp Cloud API numbers of the workspace with their WABA.\n\n``supports_dynamic`` = plan allows dynamic flows AND the number is not a\nWhatsApp Business App (Coexistence) number.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","publish-targets"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2bc7dd80-974a-4131-a1c3-c2cf5fcc98c3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publish-targets"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"eb22f154-7dec-4d16-9edd-044259de9e32","name":"Publish Publication","request":{"name":"Publish Publication","description":{"content":"Publish the pushed Meta DRAFT (irreversible on Meta).\n\nThe pushed version is recompiled first; if the Flow JSON changed it is\nuploaded to the draft before publishing (422 ``version_recompile_invalid``\nif it no longer validates, 409 ``meta_validation_errors`` if Meta rejects\nthe new JSON).\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"e5b82d5a-688a-440b-808c-e6c13a19219d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"03e1e33e-54be-41a4-a097-3ef628f6caa7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","publish"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"cd1dc673-6d12-4847-9a43-5de98365d159","name":"Deprecate Publication","request":{"name":"Deprecate Publication","description":{"content":"Deprecate the published Meta flow (it can no longer be sent).\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","deprecate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"f44f673b-e8dd-4f8e-9910-14b2eea3ccb3","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","deprecate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"77e097ff-7a0f-44f6-87b4-1959c604cb03","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","deprecate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"7fe0e67c-66c0-4ae9-b6ba-cdaa519171b4","name":"Refresh Publication Preview","request":{"name":"Refresh Publication Preview","description":{"content":"Fetch a fresh Meta web preview link (valid ~30 days).\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","refresh-preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"e1db152e-a6d8-4dd2-a0d9-d5cb14e59d8a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","refresh-preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"52801ecc-c100-4c38-b5c0-fbd9b1127b2b","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","publications",":publication_id","refresh-preview"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"publication_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"639a7aa2-5444-46e9-aaaa-08c361396509","name":"Get Custom Field Usage","request":{"name":"Get Custom Field Usage","description":{"content":"WhatsApp Flows that reference a contact custom field.\n\nScans the latest version and the published version builder doc of every\nnon-archived flow for ``options_source`` / ``mapping`` / ``prefill``\nreferences to ``custom_field_id``. ``published`` = the PUBLISHED version\nuses it. Used by the custom-field editor to warn before values change.\n\nResponse: ``{\"items\": [{definition_id, name, status, published, uses}], \"pagination\": {...}}``\n(all matches on one page).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows","custom-field-usage",":custom_field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"custom_field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"7d3f5a71-5cd4-4328-9abc-12afa44327eb","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","custom-field-usage",":custom_field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"custom_field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6bf42efa-9728-4bb5-bba3-16ae9a8526e6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows","custom-field-usage",":custom_field_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"custom_field_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ef6f7de2-579f-45a5-9b1b-62fd3ed73b36","name":"List Wa Flows","request":{"name":"List Wa Flows","description":{"content":"List the workspace's WhatsApp Flows.\n\nArchived flows are hidden unless ``status=archived`` (only archived),\n``status=all`` or ``include_archived=true``.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"},{"disabled":false,"key":"search","value":"string"},{"disabled":false,"key":"status","value":"string","description":"draft | published | deprecated | archived | active | all (default: not archived)"},{"disabled":false,"key":"kind","value":"string","description":"static | dynamic"},{"disabled":false,"key":"include_archived","value":"false","description":"Also return archived flows (default: hidden)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"8645c243-f6ef-4282-8011-341f93170990","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"},{"key":"search","value":"string"},{"key":"status","value":"string"},{"key":"kind","value":"string"},{"key":"include_archived","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"058b3ab2-e2ac-4ac1-8626-873a57ad1df5","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"},{"key":"search","value":"string"},{"key":"status","value":"string"},{"key":"kind","value":"string"},{"key":"include_archived","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0a09924d-b3c0-47ab-83fa-eeddf32e3618","name":"Create Wa Flow","request":{"name":"Create Wa Flow","description":{"content":"Create a flow: blank, from a SendSeven template, or from a builder doc (AI / import).\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"template_key\": \"string\",\n  \"language\": \"string\",\n  \"builder_doc\": {\n    \"key_0\": true\n  },\n  \"placeholder_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"origin\": \"string\",\n  \"ai_generation_id\": \"string\",\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a08c4d9f-17cf-4432-860d-01e49e59ebbc","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"template_key\": \"string\",\n  \"language\": \"string\",\n  \"builder_doc\": {\n    \"key_0\": false,\n    \"key_1\": \"string\"\n  },\n  \"placeholder_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"origin\": \"string\",\n  \"ai_generation_id\": \"string\",\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a088425c-3dfe-4b84-9bbf-daea8da655d2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"template_key\": \"string\",\n  \"language\": \"string\",\n  \"builder_doc\": {\n    \"key_0\": false,\n    \"key_1\": \"string\"\n  },\n  \"placeholder_mapping\": {\n    \"key_0\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"key_1\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"origin\": \"string\",\n  \"ai_generation_id\": \"string\",\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"70ebbbe9-17c7-4b56-b644-e4902aff4e86","name":"Get Wa Flow","request":{"name":"Get Wa Flow","description":{"content":"Flow detail incl. the current draft version (with ``builder_doc``).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"c2608b2b-d797-4e38-8c5a-be6c7ea6236e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"422cd389-5fec-4796-afbb-21fc4b0c9bd2","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a1189f95-c7af-4a8c-b913-d857ac773936","name":"Update Wa Flow","request":{"name":"Update Wa Flow","description":{"content":"Update metadata (name, description, categories) or archive / restore.\n\nThe builder doc is saved via ``POST /{id}/versions``.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"description\": \"string\",\n  \"categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a5e9d0b7-3dc3-44d2-a5ae-506e5d996904","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"strin\",\n  \"description\": \"string\",\n  \"categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"72ef59f0-6bdd-4c16-8684-70c744899622","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"strin\",\n  \"description\": \"string\",\n  \"categories\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"status\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c9ab4a3a-7ca3-4cae-b4be-6ba7cb42b1e5","name":"Archive Wa Flow","request":{"name":"Archive Wa Flow","description":{"content":"Archive (soft delete; same as ``PATCH {status: \"archived\"}``).\n\nSendSeven-side only: Meta flows are not touched. Archived flows are hidden\nfrom pickers but existing references (automation nodes, template FLOW\nbuttons, API sends by id) keep working.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"b16c3805-8a7d-47c5-96e3-ab14d2140442","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"2cc15c58-2b88-4e73-a3a0-ed6f9e8e1d8e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"df0ac5af-27f2-40c9-9a86-6a16985aef39","name":"Clone Wa Flow","request":{"name":"Clone Wa Flow","description":{"content":"Copy the current version into a new flow (same or sibling workspace).\n\nCross-workspace copies are limited to the same billing account and need\n``whatsapp_flows:write`` in the target workspace (checked by the service).\nAPI keys may only copy into another workspace when the key itself holds\n``tenants:manage``; OAuth apps may only copy within the current workspace.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","clone"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_tenant_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_channel_ids\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"bc5c2762-0a33-46f4-b91e-90e9bbeb7040","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","clone"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_tenant_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_channel_ids\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"6489d750-b0dc-4dff-8f55-87cc2e6ebe89","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","clone"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_tenant_id\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"target_channel_ids\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"22622ea4-89e2-468e-a4af-d79e40ce9346","name":"List Wa Flow Versions","request":{"name":"List Wa Flow Versions","description":{"content":"Version history, newest first.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"9d1d87c0-7e47-471b-84be-c4ddb59ea42f","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"571d1182-f1f5-4041-8037-9c08e5604049","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"add43ab4-acc2-45c5-891b-fa02a337d1dd","name":"Create Wa Flow Version","request":{"name":"Create Wa Flow Version","description":{"content":"Save the draft as a new immutable version (validated + compiled).\n\nInvalid docs are still saved (``is_valid=false``); identical content\nreturns the current version with **200**. Dynamic docs need the Scale plan.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": false\n  },\n  \"change_note\": \"string\",\n  \"restored_from_version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1fcf3098-993c-4f5d-b2f3-1b0b7397ee2d","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": false\n  },\n  \"change_note\": \"string\",\n  \"restored_from_version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"841a3af1-41ae-468f-bc49-d36cf0892153","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": false\n  },\n  \"change_note\": \"string\",\n  \"restored_from_version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8d6f31df-de52-4dc9-acbe-3acc992e9031","name":"Get Wa Flow Version","request":{"name":"Get Wa Flow Version","description":{"content":"One immutable version incl. ``builder_doc`` and compiled Flow JSON.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions",":version_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"f6ee5108-0f02-4880-8bc3-090adb4377d5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions",":version_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e17cbc53-7900-4744-b6df-3f9ef481506c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","versions",":version_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "},{"disabled":false,"type":"any","value":"string","key":"version_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a9e64e3a-08d0-41e2-b010-f3663bebb2d5","name":"Validate Wa Flow","request":{"name":"Validate Wa Flow","description":{"content":"Validate a builder doc against the workspace (nothing is saved).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","validate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": true,\n    \"key_1\": true,\n    \"key_2\": 6204.4811478249085,\n    \"key_3\": false,\n    \"key_4\": 8941\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"f236f3b2-c750-4d71-8eb1-58f31b8fdbae","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","validate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": true,\n    \"key_1\": true,\n    \"key_2\": 6204.4811478249085,\n    \"key_3\": false,\n    \"key_4\": 8941\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ec3f80ff-f7bc-4fff-b3c7-23f58c3150e4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","validate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": true,\n    \"key_1\": true,\n    \"key_2\": 6204.4811478249085,\n    \"key_3\": false,\n    \"key_4\": 8941\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"f250be89-c79e-4d3c-98ab-f7ca5d667032","name":"Compile Wa Flow","request":{"name":"Compile Wa Flow","description":{"content":"Compile an unsaved doc (or a stored version) to Meta Flow JSON (nothing is saved).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","compile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": 3136,\n    \"key_1\": 2941,\n    \"key_2\": 7922\n  },\n  \"version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"124db779-abbb-4fda-87ba-1d0955cb6a17","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","compile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": 3136,\n    \"key_1\": 2941,\n    \"key_2\": 7922\n  },\n  \"version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"09ac81e1-3f04-4243-8146-cd5ceda6124f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","compile"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"builder_doc\": {\n    \"key_0\": 3136,\n    \"key_1\": 2941,\n    \"key_2\": 7922\n  },\n  \"version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"efe25e0f-347e-4e74-a065-a0b20ac80777","name":"List Wa Flow Publications","request":{"name":"List Wa Flow Publications","description":{"content":"One publication per WhatsApp Business Account the flow was pushed to.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","publications"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"b916e3a3-5a19-4bd0-b3d3-e9aedb2c1ca2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","publications"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4d73a0f5-61be-45bc-a9d1-a04d05bf070d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","publications"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"aa0f89a1-8b27-4ecc-88fe-1c1c0ce829d0","name":"Push Wa Flow","request":{"name":"Push Wa Flow","description":{"content":"Push a version to Meta as a DRAFT, one Meta flow per WhatsApp Business Account.\n\n``channel_ids`` are grouped by WABA. Per-WABA failures are returned in\n``errors`` when at least one WABA succeeded; otherwise the error is raised.\n\nThe version's builder doc is recompiled with the current compiler before\nupload (422 ``version_recompile_invalid`` with ``issues`` if it no longer\nvalidates). Imported flows are uploaded byte-for-byte as stored.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","publications"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"259e70f3-b754-40b6-9625-f9d598a2dcb6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","publications"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5fffe902-ec2f-4335-bfae-ae06a282b8ea","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","publications"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_ids\": [\n    \"string\"\n  ],\n  \"version_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a172ec34-1613-4ff8-993b-b5e1197df674","name":"Get Wa Flow References","request":{"name":"Get Wa Flow References","description":{"content":"Where this WhatsApp Flow is used (archive / publish-changes dialogs).\n\n* ``automations`` -- Send WhatsApp Flow nodes (and form-completed triggers,\n  ``node_id: \"trigger\"``) of this workspace's automations that reference it.\n* ``templates`` -- WhatsApp templates whose FLOW button opens one of its Meta\n  flows (current, still-live and superseded ids), ANY status (the retirement\n  check only counts APPROVED/PENDING -- ``template_refs_for_meta_flows``).\n* ``scheduled_sends_count`` -- scheduled sends never reference a flow\n  definition directly (they go through templates), so this is ``0``.\n\nArchiving never breaks these references; they keep working.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","references"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"940aa7f3-b42b-4de1-9a93-9fed26245012","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","references"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"f594e94b-7260-44ab-847b-db9749331c2e","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","references"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0d4bf91d-0fa4-4341-9ae8-4fa5b55ad813","name":"Preview Wa Flow Data","request":{"name":"Preview Wa Flow Data","description":{"content":"Entry-screen data a send would carry, per key with its source (nothing is sent).\n\nSame resolve + merge as a real send: ``initial_data`` (override) > saved\nchannel defaults > send-time bindings incl. default prefill > ``__example__``.\nWithout ``contact_id`` no contact data is resolved (examples only). Values\ncoming from the contact are returned verbatim, never template-rendered.\n\nResponse: ``{screen, data, sources: {<key>: \"prefill\"|\"binding\"|\"override\"|\"example\"}}``\n(saved channel defaults count as ``binding``).\n\n**Required Scopes:** `whatsapp_flows:read` AND `contacts:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","preview-data"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"initial_data\": {\n    \"key_0\": 9381\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"25fe6158-a86f-422e-8546-e9cbf42ef655","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","preview-data"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"initial_data\": {\n    \"key_0\": 9381\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9ebad656-acbb-4f28-83bf-049f71121de1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","preview-data"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"contact_id\": \"string\",\n  \"channel_id\": \"string\",\n  \"initial_data\": {\n    \"key_0\": 9381\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c958c929-1d70-4f88-9427-2427fc0c3b41","name":"Send Wa Flow","request":{"name":"Send Wa Flow","description":{"content":"Send a published flow to a contact (interactive inside 24h, or via an approved template).\n\n`initial_data` string values may use contact variables (`{{contact.first_name}}`,\n`{{contact.email}}`, `{{contact.custom.<key>}}`, ...); they are rendered for the\nrecipient before sending. Draft flows cannot be sent (`draft_send_not_supported`).\n\nCustom Inboxes: a contact-addressed send by a member restricted to specific\ninboxes returns 409 `conversation_owned_elsewhere` while the contact is in\nan ongoing conversation a colleague handles that the member cannot open.\n\n**Required Scopes:** `messages:create` AND `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"mode\": \"interactive\",\n  \"screen\": \"string\",\n  \"initial_data\": {\n    \"key_0\": 1158.8312368038655,\n    \"key_1\": \"string\"\n  },\n  \"header_text\": \"string\",\n  \"body_text\": \"string\",\n  \"footer_text\": \"string\",\n  \"cta\": \"string\",\n  \"template_id\": \"string\",\n  \"template_variables\": {},\n  \"draft\": false,\n  \"flow_action\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"1f3e4a05-1003-43e6-b58e-637287143c91","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"mode\": \"interactive\",\n  \"screen\": \"string\",\n  \"initial_data\": {\n    \"key_0\": 1158.8312368038655,\n    \"key_1\": \"string\"\n  },\n  \"header_text\": \"string\",\n  \"body_text\": \"string\",\n  \"footer_text\": \"string\",\n  \"cta\": \"string\",\n  \"template_id\": \"string\",\n  \"template_variables\": {},\n  \"draft\": false,\n  \"flow_action\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"257f6d86-0097-4619-b51c-794414b18a0c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","send"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"channel_id\": \"string\",\n  \"contact_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"mode\": \"interactive\",\n  \"screen\": \"string\",\n  \"initial_data\": {\n    \"key_0\": 1158.8312368038655,\n    \"key_1\": \"string\"\n  },\n  \"header_text\": \"string\",\n  \"body_text\": \"string\",\n  \"footer_text\": \"string\",\n  \"cta\": \"string\",\n  \"template_id\": \"string\",\n  \"template_variables\": {},\n  \"draft\": false,\n  \"flow_action\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"97d461d6-1903-41df-96d8-a114d1e3b50d","name":"List Wa Flow Sessions","request":{"name":"List Wa Flow Sessions","description":{"content":"Sessions (sends) of this flow with their answers, newest first.\n\nInputs marked ``sensitive`` in the flow are masked as ``••••``.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","sessions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"},{"disabled":false,"key":"status","value":"string"},{"disabled":false,"key":"contact_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"aee3c2f1-ccf4-4df7-9acc-d280eac686e5","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"},{"key":"status","value":"string"},{"key":"contact_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a3810abb-de5f-4e06-8760-4f1d10badab0","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","sessions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"},{"key":"status","value":"string"},{"key":"contact_id","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"68ec6c55-d637-4f5f-9c1f-03640eb4a2e9","name":"Wa Flow Analytics","request":{"name":"Wa Flow Analytics","description":{"content":"Funnel (sent → delivered → read → opened → completed / expired) and per-screen views.\n\nCounts are distinct sessions per event type in the range.\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flows",":definition_id","analytics"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"date_from","value":"string","description":"ISO date/datetime (default: 30 days ago)"},{"disabled":false,"key":"date_to","value":"string","description":"ISO date/datetime, inclusive day (default: now)"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e6b206b4-cd7d-4e51-8417-8f2bf6e47f64","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"date_from","value":"string"},{"key":"date_to","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a0a57617-7486-4019-8d01-f2e0abc95a0d","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flows",":definition_id","analytics"],"host":["{{baseUrl}}"],"query":[{"key":"date_from","value":"string"},{"key":"date_to","value":"string"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"definition_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"eb5b3e44-ddd2-405c-9c27-1b6b8181ceb9","name":"List Wa Flow Data Sources","request":{"name":"List Wa Flow Data Sources","description":{"content":"List data sources for dynamic WhatsApp Flows (secrets are never returned).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flow-data-sources"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"adbc36b7-37f0-47f8-bf5b-7ace94ce027c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"0b96f57e-81ae-457c-aa88-85bbd20c1521","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ecefc525-88f7-427d-a0fc-68a8a335f9bc","name":"Create Wa Flow Data Source","request":{"name":"Create Wa Flow Data Source","description":{"content":"Create a data source. ``webhook`` needs the Scale plan; its URL is SSRF-checked.\n\nWithout a ``secret`` a signing secret is generated and returned ONCE as\n``signing_secret`` (it is never shown again).\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flow-data-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"source_type\": \"webhook\",\n  \"resolver_key\": \"string\",\n  \"url\": \"string\",\n  \"headers\": {},\n  \"secret\": {},\n  \"timeout_ms\": 798,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"7a764e8b-d4dc-4beb-be39-5dad0a0d500e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"source_type\": \"webhook\",\n  \"resolver_key\": \"string\",\n  \"url\": \"string\",\n  \"headers\": {},\n  \"secret\": {},\n  \"timeout_ms\": 798,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"432a4c26-7270-451b-a7c8-4c62a42d8c96","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"source_type\": \"webhook\",\n  \"resolver_key\": \"string\",\n  \"url\": \"string\",\n  \"headers\": {},\n  \"secret\": {},\n  \"timeout_ms\": 798,\n  \"is_active\": true\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ff96ac6d-e27d-4c8d-9e95-b217e3cd1695","name":"Get Wa Flow Data Source","request":{"name":"Get Wa Flow Data Source","description":{"content":"One data source (secret and header values are never returned).\n\n**Required Scopes:** `whatsapp_flows:read`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"12ebc6c7-cec9-4624-be89-ecd2d86c2ff9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"3b31527c-30bf-4b93-8ce9-fff1b71a3d56","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9ee52bcf-1c08-4f88-b42b-80ad18d6bb72","name":"Update Wa Flow Data Source","request":{"name":"Update Wa Flow Data Source","description":{"content":"Update a data source. ``secret`` is write-only; a header value of ``••••`` keeps the stored one.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"resolver_key\": \"string\",\n  \"url\": \"string\",\n  \"headers\": {},\n  \"secret\": {},\n  \"timeout_ms\": 3463,\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"dd099267-c291-4fb2-a568-2ac56dfca1f6","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"resolver_key\": \"string\",\n  \"url\": \"string\",\n  \"headers\": {},\n  \"secret\": {},\n  \"timeout_ms\": 3463,\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d9bc72cc-6cbf-405e-8f67-c22b3fb3a812","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"PATCH","body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"resolver_key\": \"string\",\n  \"url\": \"string\",\n  \"headers\": {},\n  \"secret\": {},\n  \"timeout_ms\": 3463,\n  \"is_active\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"0a6f3fe4-eb0c-420e-af21-5e892ea8d5e7","name":"Delete Wa Flow Data Source","request":{"name":"Delete Wa Flow Data Source","description":{"content":"Delete a data source. Flows bound to it fall back to their static data.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"4c1e8e7f-4062-424a-bd5d-30d6526a7474","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a745fe24-597b-4d36-8b2c-2b9288f939fa","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"28e11d7f-756e-4ae2-94c0-6f4dd53e7234","name":"Rotate Wa Flow Data Source Secret","request":{"name":"Rotate Wa Flow Data Source Secret","description":{"content":"Generate a new signing secret; returned ONCE as ``signing_secret``.\n\nThe replaced secret stays valid for 24h (``previous_secret_expires_at``): until\nthen each request carries two ``v1`` signatures (new + old) so the receiver can\nswitch over without dropped requests. Rotating again inside the window retires\nthe older secret immediately.\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"dae36135-4e72-4563-a4b4-9058744d424b","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"bbada71c-40c6-4cbf-9994-ead3e8edbceb","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","whatsapp-flow-data-sources",":data_source_id","rotate-secret"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"data_source_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"4dcbd5ed-fb80-4d67-8a02-c41dc15d4924","name":"Import Wa Flow From Meta","request":{"name":"Import Wa Flow From Meta","description":{"content":"Import a flow built in Meta's Flow Builder (read-only, JSON-only).\n\n**Required Scopes:** `whatsapp_flows:write`","type":"text/plain"},"url":{"path":["api","v1","channels",":channel_id","whatsapp-flows","import"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"meta_flow_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3e5ac09f-1098-46aa-b9c4-6bc0d0569da0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp-flows","import"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"meta_flow_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{}","cookie":[],"_postman_previewlanguage":"json"},{"id":"821a4f8d-1bd3-49a6-87f2-fc5918eea705","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","channels",":channel_id","whatsapp-flows","import"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"channel_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"meta_flow_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"581b56b4-381a-4acc-9868-d57dc5d3472c","name":"FAQ Migration","description":{"content":"","type":"text/plain"},"item":[{"id":"5c48d52f-aa29-4dd3-b3e7-3c18bde1f848","name":"Estimate Faq Migration","request":{"name":"Estimate Faq Migration","description":{"content":"Preview a bulk migration: how many summaries, how many clusters, what it costs.\n\nRead-only and side-effect free — it loads the tenant's ticket summaries and\nruns the same clustering the migration would, but makes no LLM call and\nwrites nothing. This is what the \"migrate history\" button shows before the\nuser commits.\n\nNot cheap (it clusters the whole pending corpus), so call it on demand, not\non a timer. `/faq-migration/status` is the poll-safe endpoint.\n\n**Required Scopes:** `knowledge_base:read`\n**Plan features:** `knowledge_base` + `ai_features` (fail-closed: 403 `feature_disabled`)","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-migration","estimate"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"limit","value":"18086","description":"Only consider this many summaries (default: all, max 20000)"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"adcd8bfd-9c2f-4dd5-9518-40eb65005984","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-migration","estimate"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"18086"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tenant_id\": \"string\",\n  \"summaries_total\": 8623,\n  \"summaries_already_migrated\": 4216,\n  \"summaries_pending\": 4845,\n  \"clusters\": 9528,\n  \"clusters_at_or_above_min_size\": 4570,\n  \"singleton_clusters\": 7376,\n  \"min_cluster_size\": 5715,\n  \"estimated_llm_calls\": 7047,\n  \"estimated_cost_eur\": 1872.971944376104,\n  \"estimated_cost_eur_without_singletons\": 2885.3517958219354,\n  \"estimated_runs\": 5470\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cadf48ba-845e-42e9-9b85-377fc041250f","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-migration","estimate"],"host":["{{baseUrl}}"],"query":[{"key":"limit","value":"18086"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ebce9d70-0850-477d-9bc5-c9a4a14a6ba7","name":"Start Faq Migration","request":{"name":"Start Faq Migration","description":{"content":"Start (or preview) the bulk migration of ticket summaries into FAQ drafts.\n\n`dry_run=true` is handled **inline and never enqueues anything**: it loads\nand clusters the summaries and returns what it would have processed. No\nGemini call, no row written, no folder touched — so it cannot possibly\nchange the tenant's knowledge base. Everything else publishes one\n`migrate_ticket_summaries` job; the worker processes a bounded number of\nclusters and re-enqueues itself until nothing is left, so this returns\nimmediately and the UI polls `/faq-migration/status`.\n\nEverything the migration imports lands as a **draft**, whatever the\ntenant's `faq_generation_mode` says.\n\n**409** when a migration is already in flight — the job chain would\notherwise fork, double-billing the tenant for the same clusters. The\nresponse body carries the run that is holding it:\n\n    {\"detail\": {\"code\": \"migration_already_running\",\n                \"message\": \"...\",\n                \"run\": {...} | null,\n                \"last_activity_at\": \"...Z\" | null}}\n\nPass `force=true` to override, once you know the other run is dead.\n\n**Required Scopes:** `knowledge_base:manage`\n**Plan features:** `knowledge_base` + `ai_features` (fail-closed: 403 `feature_disabled`)","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-migration","start"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"dry_run\": false,\n  \"limit\": 6825,\n  \"max_clusters\": 33,\n  \"min_cluster_size\": 35,\n  \"include_singletons\": true,\n  \"retire_folder_when_done\": false,\n  \"force\": false\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"a502efc5-e2b4-46a1-8f1d-29518ca0d826","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-migration","start"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"dry_run\": false,\n  \"limit\": 6825,\n  \"max_clusters\": 33,\n  \"min_cluster_size\": 35,\n  \"include_singletons\": true,\n  \"retire_folder_when_done\": false,\n  \"force\": false\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"success\": true,\n  \"status\": \"string\",\n  \"dry_run\": true,\n  \"params\": {\n    \"dry_run\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"limit\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"max_clusters\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"min_cluster_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"include_singletons\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"retire_folder_when_done\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"message\": \"string\",\n  \"run_id\": \"string\",\n  \"started_at\": \"string\",\n  \"forced\": false,\n  \"lease_held\": false,\n  \"preview\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ea39d860-7960-4867-8db1-5564aa06570c","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-migration","start"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"dry_run\": false,\n  \"limit\": 6825,\n  \"max_clusters\": 33,\n  \"min_cluster_size\": 35,\n  \"include_singletons\": true,\n  \"retire_folder_when_done\": false,\n  \"force\": false\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"ff56f29e-e78b-4d0b-87dd-096c274a8f93","name":"Get Faq Migration Status","request":{"name":"Get Faq Migration Status","description":{"content":"Progress of the bulk migration, from what it has actually persisted.\n\nPoll-safe: counts are read back from the rows the migration wrote, with no\nclustering and no LLM call.\n\n**What is and is not knowable.** The migration keeps no run record and no\ncursor — it is resumable purely from `faq_items.source_conversation_ids`.\nSo the backend can substantiate exactly one ratio,\n`percent_summaries_processed` (summaries consumed / summaries that exist),\nand it deliberately reports nothing about clusters remaining or time\nleft, because nothing persists that. `running` is likewise an inference\n(`running_evidence` says from what), not a recorded state.\n\n**Required Scopes:** `knowledge_base:read`\n**Plan features:** `knowledge_base` + `ai_features` (fail-closed: 403 `feature_disabled`)","type":"text/plain"},"url":{"path":["api","v1","knowledge-base","faq-migration","status"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"include_estimate","value":"false","description":"Also run a fresh clustering pass (same work as /faq-migration/estimate). Expensive — never poll with this on"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"2e865dcd-fab1-4571-a9eb-7a9b542a2663","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-migration","status"],"host":["{{baseUrl}}"],"query":[{"key":"include_estimate","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"tenant_id\": \"string\",\n  \"running\": true,\n  \"summaries_total\": 4668,\n  \"summaries_migrated\": 820,\n  \"summaries_pending\": 905,\n  \"entries_imported\": 4564,\n  \"clusters_rejected\": 8141,\n  \"migrated_rows_total\": 4013,\n  \"checked_at\": \"string\",\n  \"running_evidence\": [\n    \"string\",\n    \"string\"\n  ],\n  \"run\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"percent_summaries_processed\": 3491.552782632719,\n  \"entries_by_status\": {\n    \"key_0\": 9914,\n    \"key_1\": 9640\n  },\n  \"rejected_reasons\": {\n    \"key_0\": 8824\n  },\n  \"last_activity_at\": \"string\",\n  \"estimate\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"9c5feab1-3f1a-4b48-a901-d297d98ba135","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","knowledge-base","faq-migration","status"],"host":["{{baseUrl}}"],"query":[{"key":"include_estimate","value":"false"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"8fbfd74c-ab5e-49fd-ace7-940d4e35b5e8","name":"AI Answers","description":{"content":"","type":"text/plain"},"item":[{"id":"9c01573f-87c3-4245-be21-0a4d09b9342f","name":"Get Ai Answer","request":{"name":"Get Ai Answer","description":{"content":"Get one AI answer event with its sources and rating state.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","ai-answers",":event_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"e495687e-e48b-4230-8c5c-606a19587fa7","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","ai-answers",":event_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"surface\": \"string\",\n  \"created_at\": \"1992-01-02T23:55:31.385Z\",\n  \"conversation_id\": \"string\",\n  \"message_id\": \"string\",\n  \"bot_id\": \"string\",\n  \"user_id\": \"string\",\n  \"query_text\": \"string\",\n  \"retrieval_query\": \"string\",\n  \"answer_text\": \"string\",\n  \"model\": \"string\",\n  \"confidence\": 296.4904838975346,\n  \"outcome\": \"string\",\n  \"flagged\": false,\n  \"agent_id\": \"string\",\n  \"agent_turn_id\": \"string\",\n  \"agent_context\": {\n    \"key_0\": \"string\"\n  },\n  \"sources\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"my_rating\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  },\n  \"rating_counts\": {\n    \"key_0\": 5211\n  },\n  \"correction_ids\": [\n    \"string\",\n    \"string\"\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"010ef9b7-7d61-43d4-9f0d-2b1dd7147dc6","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","ai-answers",":event_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"a7492943-c811-4e05-aef8-a521d1254a13","name":"List Conversation Ai Answers","request":{"name":"List Conversation Ai Answers","description":{"content":"List AI answers generated in a conversation.\n\nThe rating UI renders a control next to a *message*, so results are also\nfilterable by ``message_id`` — that is the key the frontend holds.\n\n**Required Scopes:** `conversations:read`","type":"text/plain"},"url":{"path":["api","v1","conversations",":conversation_id","ai-answers"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"message_id","value":"string","description":"Only the event that produced this message"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"d6f089f1-1590-4735-a55f-3f8503da3d09","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","ai-answers"],"host":["{{baseUrl}}"],"query":[{"key":"message_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"4fae8260-3c47-40d7-97d8-1e6492bedd44","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","conversations",":conversation_id","ai-answers"],"host":["{{baseUrl}}"],"query":[{"key":"message_id","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"50"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"conversation_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"9f80bdc5-dda1-47a5-bd1e-549217f25780","name":"Rate Ai Answer","request":{"name":"Rate Ai Answer","description":{"content":"Rate an AI answer 👍 / 👎 / ✗ (upsert — re-rating replaces).\n\n``reason_category`` (``factually_wrong`` | ``outdated`` | ``incomplete`` |\n``off_topic`` | ``wrong_tone`` | ``policy_violation`` | ``hallucinated`` |\n``other``) is optional:\n\n* ``down`` without a reason is accepted — a bare 👎 that only feeds the\n  quality statistics.\n* ``wrong`` without a reason is stored as ``factually_wrong``.\n\nA KB correction is opened (and an analysis job enqueued) when:\n\n* the verdict is ``wrong`` — always;\n* the verdict is ``down`` **with** a ``reason_category`` — always\n  (``comment`` / ``better_answer`` optional);\n* the verdict is ``down`` without a reason but with substantive text\n  (>= 15 chars) in ``comment`` and/or ``better_answer`` — legacy fallback.\n\n``correction_opened`` / ``correction_id`` in the response tell the caller\nwhich happened, so the UI can confirm it (\"Sent for review\") and link to\nthe review queue.\n\nOpening a correction never publishes anything by itself: a ``down``-born\ncorrection is review-only even for tenants in ``kb_correction_mode=auto``.\n\nReturns the recomputed scores of every FAQ entry the verdict touched, so\nthe UI can reflect the consequence immediately.\n\n**Required Scopes:** `conversations:write`","type":"text/plain"},"url":{"path":["api","v1","ai-answers",":event_id","rate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"verdict\": \"string\",\n  \"reason_category\": \"string\",\n  \"comment\": \"string\",\n  \"better_answer\": \"string\",\n  \"source_attribution\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"3fb1db78-87e0-4c70-9d46-3e76f88f9b44","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","ai-answers",":event_id","rate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"verdict\": \"string\",\n  \"reason_category\": \"string\",\n  \"comment\": \"string\",\n  \"better_answer\": \"string\",\n  \"source_attribution\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"rating\": {\n    \"id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"verdict\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"rated_by_user_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"created_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"updated_at\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"reason_category\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"comment\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"better_answer\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"source_attribution\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_id\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"agent_context\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"ai_answer_event_id\": \"string\",\n  \"success\": true,\n  \"correction_opened\": false,\n  \"correction_id\": \"string\",\n  \"updated_entries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"b03aa00e-f53f-4be5-8290-fa7cdfea1072","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","ai-answers",":event_id","rate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"verdict\": \"string\",\n  \"reason_category\": \"string\",\n  \"comment\": \"string\",\n  \"better_answer\": \"string\",\n  \"source_attribution\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"bcfb2ca5-eff9-42f0-81fe-c69a3fa76ba0","name":"Delete Ai Answer Rating","request":{"name":"Delete Ai Answer Rating","description":{"content":"Withdraw your own rating. Affected entry scores are recomputed.\n\n**Required Scopes:** `conversations:write`","type":"text/plain"},"url":{"path":["api","v1","ai-answers",":event_id","rate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE"},"response":[{"id":"4e945d36-59a2-4844-b9c8-cea55e438b7c","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","ai-answers",":event_id","rate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"success\": true,\n  \"message\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fd4ec1c9-07fb-4255-8abb-c349642ed5a1","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","ai-answers",":event_id","rate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"event_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"DELETE","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"0c941774-bbfd-4460-b9d4-7a4097557032","name":"KB Corrections","description":{"content":"","type":"text/plain"},"item":[{"id":"7f3de4be-918e-4b57-a4ad-e0a827047eea","name":"List Kb Corrections","request":{"name":"List Kb Corrections","description":{"content":"The correction review queue.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","kb-corrections"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"status","value":"string","description":"open|analyzing|proposed|applied|rejected|failed"},{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"29953a9a-5037-4fe9-af3b-68c59cd77c5e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","kb-corrections"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"ac7e025c-d684-4c9f-8945-a41219e0b30a","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","kb-corrections"],"host":["{{baseUrl}}"],"query":[{"key":"status","value":"string"},{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"e781b11a-89b3-4e20-8ba1-ba083a07ff19","name":"Create Kb Correction","request":{"name":"Create Kb Correction","description":{"content":"Report something in the knowledge base as wrong.\n\nReporting is deliberately an everyday agent permission — the person who\nnotices the mistake is the one on the conversation. Deciding what the KB\nsays still needs `knowledge_base:manage`.\n\n**Required Scopes:** `conversations:write`","type":"text/plain"},"url":{"path":["api","v1","kb-corrections"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"ai_answer_event_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"faq_item_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"e5ba2e33-70fb-44b6-b940-5c942b380230","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","kb-corrections"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"ai_answer_event_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"faq_item_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Created","code":201,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"created_at\": \"1984-12-24T13:50:46.860Z\",\n  \"updated_at\": \"1987-08-03T09:09:53.479Z\",\n  \"ai_answer_event_id\": \"string\",\n  \"ai_answer_rating_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"reported_by_user_id\": \"string\",\n  \"reported_by_name\": \"string\",\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"proposed_changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"analysis_confidence\": 1494.1139715050688,\n  \"auto_applied\": false,\n  \"resolved_by_user_id\": \"string\",\n  \"resolved_at\": \"1968-06-21T07:12:08.829Z\",\n  \"last_error\": \"string\",\n  \"answer_text\": \"string\",\n  \"query_text\": \"string\",\n  \"affected_entries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"correction_kind\": \"string\",\n  \"policy_rule\": \"string\",\n  \"skill_suggestion_id\": \"string\",\n  \"policy_target\": {\n    \"key_0\": 5732,\n    \"key_1\": 7103,\n    \"key_2\": 2566.946554351646\n  },\n  \"policy_note\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"fd50831d-0fe1-49e5-90db-c7a238e75738","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","kb-corrections"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"ai_answer_event_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"faq_item_ids\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"c007b696-6422-4940-996c-56735b6552e7","name":"Get Kb Correction","request":{"name":"Get Kb Correction","description":{"content":"Correction detail, including the answer it came from and the entries it\nwould change.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","kb-corrections",":correction_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"6f15c8c5-2bf9-4769-9372-59d65f2aaca2","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","kb-corrections",":correction_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"created_at\": \"1984-12-24T13:50:46.860Z\",\n  \"updated_at\": \"1987-08-03T09:09:53.479Z\",\n  \"ai_answer_event_id\": \"string\",\n  \"ai_answer_rating_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"reported_by_user_id\": \"string\",\n  \"reported_by_name\": \"string\",\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"proposed_changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"analysis_confidence\": 1494.1139715050688,\n  \"auto_applied\": false,\n  \"resolved_by_user_id\": \"string\",\n  \"resolved_at\": \"1968-06-21T07:12:08.829Z\",\n  \"last_error\": \"string\",\n  \"answer_text\": \"string\",\n  \"query_text\": \"string\",\n  \"affected_entries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"correction_kind\": \"string\",\n  \"policy_rule\": \"string\",\n  \"skill_suggestion_id\": \"string\",\n  \"policy_target\": {\n    \"key_0\": 5732,\n    \"key_1\": 7103,\n    \"key_2\": 2566.946554351646\n  },\n  \"policy_note\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"a9302969-5478-41e7-91a4-e80c57d1ca06","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","kb-corrections",":correction_id"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"5ee71890-31dc-465a-abcb-95dadb2294a3","name":"Approve Kb Correction","request":{"name":"Approve Kb Correction","description":{"content":"Apply a correction's proposed changes to the knowledge base.\n\nEvery applied change writes a ``faq_entry_revisions`` row, which is what\nmakes this reversible in one click.\n\n**Required Scopes:** `knowledge_base:manage` — plus `automation:update`\nwhen any change that would be applied is an ``append_bot_rule`` (it\nrewrites the bot's instructions); otherwise 403 ``missing_scope``.","type":"text/plain"},"url":{"path":["api","v1","kb-corrections",":correction_id","approve"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"change_indexes\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"8c715602-0ea4-4466-9093-d8831f7b5279","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","kb-corrections",":correction_id","approve"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"change_indexes\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"created_at\": \"1984-12-24T13:50:46.860Z\",\n  \"updated_at\": \"1987-08-03T09:09:53.479Z\",\n  \"ai_answer_event_id\": \"string\",\n  \"ai_answer_rating_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"reported_by_user_id\": \"string\",\n  \"reported_by_name\": \"string\",\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"proposed_changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"analysis_confidence\": 1494.1139715050688,\n  \"auto_applied\": false,\n  \"resolved_by_user_id\": \"string\",\n  \"resolved_at\": \"1968-06-21T07:12:08.829Z\",\n  \"last_error\": \"string\",\n  \"answer_text\": \"string\",\n  \"query_text\": \"string\",\n  \"affected_entries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"correction_kind\": \"string\",\n  \"policy_rule\": \"string\",\n  \"skill_suggestion_id\": \"string\",\n  \"policy_target\": {\n    \"key_0\": 5732,\n    \"key_1\": 7103,\n    \"key_2\": 2566.946554351646\n  },\n  \"policy_note\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"d9ef035a-a60d-4ec1-bec1-223bbd947747","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","kb-corrections",":correction_id","approve"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"change_indexes\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"fca13d04-fede-46c7-83af-3aad87baf27c","name":"Reject Kb Correction","request":{"name":"Reject Kb Correction","description":{"content":"Decline a proposed correction. Nothing touches the knowledge base.\n\nA policy correction routed to an open agent skill suggestion has its rule\nremoved from that suggestion; with no rule left the suggestion is\ndismissed. The answer rating itself is kept.\n\n**Required Scopes:** `knowledge_base:manage`","type":"text/plain"},"url":{"path":["api","v1","kb-corrections",":correction_id","reject"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reason\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"9d8fccea-bd4a-4235-be71-1ec88052fbb9","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","kb-corrections",":correction_id","reject"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reason\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"status\": \"string\",\n  \"created_at\": \"1984-12-24T13:50:46.860Z\",\n  \"updated_at\": \"1987-08-03T09:09:53.479Z\",\n  \"ai_answer_event_id\": \"string\",\n  \"ai_answer_rating_id\": \"string\",\n  \"conversation_id\": \"string\",\n  \"reported_by_user_id\": \"string\",\n  \"reported_by_name\": \"string\",\n  \"what_is_wrong\": \"string\",\n  \"why\": \"string\",\n  \"correct_answer\": \"string\",\n  \"proposed_changes\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"analysis_confidence\": 1494.1139715050688,\n  \"auto_applied\": false,\n  \"resolved_by_user_id\": \"string\",\n  \"resolved_at\": \"1968-06-21T07:12:08.829Z\",\n  \"last_error\": \"string\",\n  \"answer_text\": \"string\",\n  \"query_text\": \"string\",\n  \"affected_entries\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"correction_kind\": \"string\",\n  \"policy_rule\": \"string\",\n  \"skill_suggestion_id\": \"string\",\n  \"policy_target\": {\n    \"key_0\": 5732,\n    \"key_1\": 7103,\n    \"key_2\": 2566.946554351646\n  },\n  \"policy_note\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"1149d8be-6546-4482-9f52-bb2dd083e528","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","kb-corrections",":correction_id","reject"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"correction_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"reason\": {\n    \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n  }\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"8bf48868-ed49-4fb3-8520-566896fcb1b0","name":"List Faq Entry Revisions","request":{"name":"List Faq Entry Revisions","description":{"content":"Full change history of a FAQ entry, newest first.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","faq-entries",":faq_item_id","revisions"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"page","value":"1"},{"disabled":false,"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"faq_item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a1045de7-0afd-4f04-a4d4-107aa38d9366","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","faq-entries",":faq_item_id","revisions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"faq_item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"items\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"pagination\": {\n    \"total\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"page_size\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"total_pages\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_next\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"has_prev\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"next_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"prev_cursor\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  }\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"939f07b0-1a3f-4171-98d8-09e463ec8da7","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","faq-entries",":faq_item_id","revisions"],"host":["{{baseUrl}}"],"query":[{"key":"page","value":"1"},{"key":"page_size","value":"25"}],"variable":[{"disabled":false,"type":"any","value":"string","key":"faq_item_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"345a2685-6f76-47b8-ae6b-46c32f2d39f5","name":"Revert Faq Revision","request":{"name":"Revert Faq Revision","description":{"content":"Undo one revision, restoring the entry's previous question/answer/status.\n\nReturns the NEW revision row that records the revert — a revert is itself\na change, never a silent rewrite of history.\n\n**Required Scopes:** `knowledge_base:manage`","type":"text/plain"},"url":{"path":["api","v1","faq-revisions",":revision_id","revert"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"revision_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST"},"response":[{"id":"5ac86983-fa7f-495c-af9e-015a6017fcd1","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","faq-revisions",":revision_id","revert"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"revision_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"id\": \"string\",\n  \"tenant_id\": \"string\",\n  \"faq_item_id\": \"string\",\n  \"revision_number\": 3795,\n  \"change_type\": \"string\",\n  \"created_at\": \"2025-04-24T18:31:38.948Z\",\n  \"question_before\": \"string\",\n  \"answer_before\": \"string\",\n  \"question_after\": \"string\",\n  \"answer_after\": \"string\",\n  \"status_before\": \"string\",\n  \"status_after\": \"string\",\n  \"changed_by_user_id\": \"string\",\n  \"changed_by_name\": \"string\",\n  \"correction_id\": \"string\",\n  \"auto_applied\": false,\n  \"rationale\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"e648b77d-9607-4cf5-b5b8-c3839a7413ae","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","faq-revisions",":revision_id","revert"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"revision_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"a7991593-2864-4e72-822e-7088f1668427","name":"KB Health","description":{"content":"","type":"text/plain"},"item":[{"id":"7f184a80-95cb-409d-aeb3-aabc84fe3a05","name":"Get Kb Health","request":{"name":"Get Kb Health","description":{"content":"Knowledge-base health dashboard.\n\nBuckets: most used, never used, flagged, low quality, possible duplicates,\nstale. Note ``never_used`` counts *sent replies*, not retrievals — an entry\nthat keeps getting retrieved but never makes it into an answer is exactly\nthe kind of dead weight this view exists to surface.\n\nBulk-migration ledger rows are excluded from every bucket and every total.\n\n**Required Scopes:** `knowledge_base:read`","type":"text/plain"},"url":{"path":["api","v1","kb-health"],"host":["{{baseUrl}}"],"query":[{"disabled":false,"key":"folder_id","value":"string","description":"Restrict to one KB folder"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET"},"response":[{"id":"a377005f-2779-4c9c-b0ba-0312478c3fb0","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","kb-health"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"totals\": {\n    \"total_entries\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"published\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"draft\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"needs_review\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"archived\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"open_corrections\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"scored_entries\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"unscored_entries\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    \"average_quality_score\": {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  },\n  \"generated_at\": \"1964-08-13T13:40:52.112Z\",\n  \"most_used\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"never_used\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"flagged\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"low_quality\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"possible_duplicates\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ],\n  \"stale\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"02dd9501-ee65-4068-a48d-b01721b7a8e4","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","kb-health"],"host":["{{baseUrl}}"],"query":[{"key":"folder_id","value":"string"}],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"GET","body":{}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]},{"id":"682d92e2-86e7-446e-8f44-d43d4833c78d","name":"Chat Translation","description":{"content":"","type":"text/plain"},"item":[{"id":"44361c87-566d-4702-ad68-c6fe07b9a95b","name":"Translate Message","request":{"name":"Translate Message","description":{"content":"Translate an inbound message and cache the result in message meta.\n\nCached translations are stored in `message.meta.translations` so repeated\nrequests for the same language return instantly.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","messages",":message_id","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"target_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"03df40d9-7434-43cd-b528-2dbf5d3aa94e","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","messages",":message_id","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"target_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"original\": \"string\",\n  \"translated\": \"string\",\n  \"language\": \"string\",\n  \"message_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"5d65b5e1-bdfa-4d91-8b48-0eb5744840e9","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","messages",":message_id","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"target_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"42c0ca8b-15cf-4fca-b65b-436e948d73ff","name":"Translate Email Message","request":{"name":"Translate Email Message","description":{"content":"Translate an email message body and cache the result in email metadata.\n\nCached translations are stored in `email_metadata.translations` so repeated\nrequests for the same language return instantly.\n\n**Required Scopes:** `messages:read`","type":"text/plain"},"url":{"path":["api","v1","email-messages",":email_message_id","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"target_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"76a74b5a-f2bf-4ef7-9cb6-b8392939ab3a","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","email-messages",":email_message_id","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"target_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"original\": \"string\",\n  \"translated\": \"string\",\n  \"language\": \"string\",\n  \"message_id\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"cdc541a5-84ea-4781-aa52-124c5257f372","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","email-messages",":email_message_id","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[{"disabled":false,"type":"any","value":"string","key":"email_message_id","description":"(Required) "}]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"target_language\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}},{"id":"3cee836f-10b9-43eb-beb1-962cc4d8f930","name":"Translate Text","request":{"name":"Translate Text","description":{"content":"Translate arbitrary text for outbound message composition.\n\nWhen `target_language` is \"auto\", the language is detected from\n`context_messages` (recent inbound messages from the contact).\n\n**Required Scopes:** `messages:create`","type":"text/plain"},"url":{"path":["api","v1","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Content-Type","value":"application/json"},{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"target_language\": \"string\",\n  \"conversation_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[{"id":"2aeefb7d-1329-4445-b71c-ce39332ed650","name":"Successful Response","originalRequest":{"url":{"path":["api","v1","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"target_language\": \"string\",\n  \"conversation_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"OK","code":200,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"translated\": \"string\",\n  \"detected_language\": \"string\"\n}","cookie":[],"_postman_previewlanguage":"json"},{"id":"c17d1cd7-b647-4909-8d26-3246a22ff5ab","name":"Validation Error","originalRequest":{"url":{"path":["api","v1","translate"],"host":["{{baseUrl}}"],"query":[],"variable":[]},"header":[{"key":"Accept","value":"application/json"}],"method":"POST","body":{"mode":"raw","raw":"{\n  \"text\": \"string\",\n  \"target_language\": \"string\",\n  \"conversation_id\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"status":"Unprocessable Entity (WebDAV) (RFC 4918)","code":422,"header":[{"key":"Content-Type","value":"application/json"}],"body":"{\n  \"detail\": [\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    },\n    {\n      \"value\": \"<Error: Too many levels of nesting to fake this schema>\"\n    }\n  ]\n}","cookie":[],"_postman_previewlanguage":"json"}],"event":[],"protocolProfileBehavior":{"disableBodyPruning":true}}],"event":[]}],"event":[],"variable":[{"type":"string","value":"https://api.sendseven.com","key":"baseUrl"},{"key":"apiToken","value":"","type":"string"}],"info":{"_postman_id":"9517fbef-b6e9-4beb-a5e1-29014fbc67e5","name":"SendSeven API","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json","description":"SendSeven unified messaging API. Generated from https://docs.sendseven.com/openapi/sendseven-api.json. Set the baseUrl variable to https://api.sendseven.com and the apiToken variable to your s7_api_ token (Settings > API Tokens)."},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiToken}}","type":"string"}]}}