{"openapi":"3.1.0","info":{"title":"DobroDesk Public API","version":"1.0.0","description":"Approval-safe access to conversation-first customer support data."},"servers":[{"url":"/api/v1"}],"security":[{"bearerAuth":[]}],"paths":{"/conversations":{"get":{"operationId":"listConversations","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A cursor-paginated conversation page."}}}},"/conversations/{conversationId}":{"get":{"operationId":"getConversation","parameters":[{"name":"conversationId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Conversation and timeline."}}}},"/conversations/{conversationId}/notes":{"post":{"operationId":"addInternalNote","parameters":[{"name":"conversationId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["bodyText"],"properties":{"bodyText":{"type":"string","minLength":1,"maxLength":20000}}}}}},"responses":{"200":{"description":"Private note saved exactly once."}}}},"/customers":{"get":{"operationId":"listCustomers","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"search","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A cursor-paginated customer page."}}}},"/customers/{customerId}":{"get":{"operationId":"getCustomer","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Customer identity, company links and support rollup."}}}},"/companies":{"get":{"operationId":"listCompanies","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"search","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"A cursor-paginated company page."}}}},"/companies/{companyId}":{"get":{"operationId":"getCompany","parameters":[{"name":"companyId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Company contacts and support rollup."}}}},"/inboxes":{"get":{"operationId":"listInboxes","responses":{"200":{"description":"Inboxes and operational counts."}}}},"/teams":{"get":{"operationId":"listTeams","responses":{"200":{"description":"Teams and member counts."}}}},"/teams/{teamId}":{"get":{"operationId":"getTeam","parameters":[{"name":"teamId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Team and member identities."}}}},"/skills":{"get":{"operationId":"listSkills","responses":{"200":{"description":"Skills and Inbox routing requirements."}}}},"/workflows":{"get":{"operationId":"listWorkflows","responses":{"200":{"description":"Visual workflow drafts and published versions."}}}},"/workflows/{workflowId}":{"get":{"operationId":"getWorkflow","parameters":[{"name":"workflowId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"One visual workflow graph."}}}},"/analytics":{"get":{"operationId":"getAnalytics","parameters":[{"name":"days","in":"query","schema":{"type":"integer","enum":[7,30,90,120]}}],"responses":{"200":{"description":"Support speed, quality, SLA, CSAT and SLO metrics."}}}},"/knowledge-sources":{"get":{"operationId":"listKnowledgeSources","responses":{"200":{"description":"Knowledge sources and their publication and AI access state."}}}},"/webhooks":{"get":{"operationId":"listWebhooks","responses":{"200":{"description":"Webhook subscriptions and recent delivery attempts."}}}},"/actions":{"get":{"operationId":"listActions","responses":{"200":{"description":"Versioned action definitions and approval policies."},"403":{"description":"The token does not have actions:read."}}}},"/actions/proposals":{"post":{"operationId":"proposeAction","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":16,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["actionId","conversationId","conversationRevision","input"],"properties":{"actionId":{"type":"string"},"conversationId":{"type":"string"},"conversationRevision":{"type":"integer","minimum":0},"input":{"type":"object"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Action proposal availability and execution outcome."},"400":{"description":"The proposal body or idempotency key is malformed."},"403":{"description":"The token does not have actions:propose."},"404":{"description":"The conversation is not in the authenticated workspace."},"409":{"description":"The conversation revision, idempotency key or provider execution is stale, conflicting or still processing."}}}},"/actions/{proposalId}":{"get":{"operationId":"getActionProposal","security":[{"bearerAuth":[]}],"parameters":[{"name":"proposalId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A workspace-scoped Action lifecycle status."},"403":{"description":"The token does not have actions:read."},"404":{"description":"The Action proposal is not in the authenticated workspace."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"dd_live_..."}}}}