CM.com · Schema
Conversation
Complete conversation with analytics
CompanyCPaaSMessagingSMSVoicePaymentsVerificationTicketing
Properties
| Name | Type | Description |
|---|---|---|
| ended | string | |
| feedback | object | |
| feedback_comment | stringnull | |
| manual_resolution | object | |
| messages | array | |
| most_common_channel | stringnull | |
| most_common_language | stringnull | |
| most_common_origin | stringnull | |
| most_common_product | stringnull | |
| num_matched_user_items | integer | |
| profile_id | integernull | |
| profile_name | stringnull | |
| recognition_rate | number | |
| resolution | object | |
| resolution_reasoning | stringnull | |
| started | string | |
| subtopic | object | |
| summary | stringnull | |
| topic | object | |
| total_user_items | integer | |
| version | integer | |
| visited_agent_ids | array | |
| visited_agents | array | |
| visited_tool_ids | array | |
| visited_tools | array |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/cm-com/main/json-schema/cm-com-conversation-schema.json",
"title": "Conversation",
"description": "Complete conversation with analytics",
"x-generated": "2026-10-13",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/cm-com-halo-analytics-v1-openapi.yml#/components/schemas/Conversation",
"type": "object",
"required": [
"started",
"ended",
"total_user_items",
"num_matched_user_items",
"recognition_rate",
"messages"
],
"properties": {
"ended": {
"type": "string",
"format": "date-time"
},
"feedback": {
"$ref": "#/$defs/ConversationFeedback"
},
"feedback_comment": {
"type": [
"string",
"null"
]
},
"manual_resolution": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/ManualResolution"
}
]
},
"messages": {
"type": "array",
"items": {
"$ref": "#/$defs/Message"
}
},
"most_common_channel": {
"type": [
"string",
"null"
]
},
"most_common_language": {
"type": [
"string",
"null"
]
},
"most_common_origin": {
"type": [
"string",
"null"
]
},
"most_common_product": {
"type": [
"string",
"null"
]
},
"num_matched_user_items": {
"type": "integer",
"format": "int32"
},
"profile_id": {
"type": [
"integer",
"null"
],
"format": "int32"
},
"profile_name": {
"type": [
"string",
"null"
]
},
"recognition_rate": {
"type": "number",
"format": "double"
},
"resolution": {
"$ref": "#/$defs/ConversationResolution"
},
"resolution_reasoning": {
"type": [
"string",
"null"
]
},
"started": {
"type": "string",
"format": "date-time"
},
"subtopic": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Subtopic"
}
]
},
"summary": {
"type": [
"string",
"null"
]
},
"topic": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Topic"
}
]
},
"total_user_items": {
"type": "integer",
"format": "int32"
},
"version": {
"type": "integer",
"format": "int32"
},
"visited_agent_ids": {
"type": "array",
"items": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
"visited_agents": {
"type": "array",
"items": {
"$ref": "#/$defs/VisitedAgent"
}
},
"visited_tool_ids": {
"type": "array",
"items": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
"visited_tools": {
"type": "array",
"items": {
"$ref": "#/$defs/VisitedTool"
}
}
},
"$defs": {
"Actor": {
"oneOf": [
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"msc_user"
]
}
}
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"type": {
"type": "string",
"enum": [
"msc_agent"
]
}
}
},
{
"type": "object",
"required": [
"id",
"name",
"type"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"teams"
]
}
}
}
],
"description": "Identifies the specific participant who authored a `User` or `Assistant`\nconversation item, for conversations with more than one distinct actor\non that role (e.g. MSC's end-user/agent distinction, or a Teams channel\nthread). Absent when the item's role alone identifies the author.\n\nSerializes as a tagged object (`{\"type\": \"msc_user\"}`, `{\"type\": \"teams\", ...}`,\netc). Deserialization additionally accepts the bare strings `\"End_User\"` /\n`\"Customer_Service_Agent\"` for `MscUser` / `MscAgent { name: None }` — MSC's\nlegacy `/instruction` and `/suggestion` endpoints have sent exactly those two\nstring values on the wire for years, so reading that shape can't be dropped.\nNothing produces it anymore; it's accepted, not emitted."
},
"AgentHandoverDetails": {
"type": "object",
"description": "Agent handover details",
"required": [
"stop_status"
],
"properties": {
"from_agent_name": {
"type": [
"string",
"null"
]
},
"from_agent_version_id": {
"type": [
"integer",
"null"
],
"format": "int32"
},
"reasoning": {
"type": [
"string",
"null"
]
},
"stop_status": {
"$ref": "#/$defs/AgentInteractionState"
},
"to_agent_name": {
"type": [
"string",
"null"
]
},
"to_agent_version_id": {
"type": [
"integer",
"null"
],
"format": "int32"
}
}
},
"AgentInteractionState": {
"type": "string",
"description": "Agent interaction state",
"enum": [
"active",
"completed",
"breakout",
"handover"
]
},
"AgentResult": {
"type": "object",
"description": "Agent execution result",
"properties": {
"agent_id": {
"type": [
"integer",
"null"
],
"format": "int64"
},
"agent_name": {
"type": [
"string",
"null"
]
},
"agent_version_id": {
"type": [
"integer",
"null"
],
"format": "int64"
},
"handover_reasoning": {
"type": [
"string",
"null"
]
},
"tool_results": {
"type": "array",
"items": {
"$ref": "#/$defs/ToolResult"
}
},
"tool_uses": {
"type": "array",
"items": {
"$ref": "#/$defs/ToolUse"
}
}
}
},
"AgenticParkPayload": {
"type": "object",
"description": "Park payload for agentic activity",
"properties": {
"agent_response": {
"type": [
"string",
"null"
],
"description": "Agent's response to show the user"
},
"conversation_id": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Conversation ID for continuing multi-turn conversations"
},
"dialog_options": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/ConversationOption"
},
"description": "Selectable buttons to show alongside the response"
},
"image_carousel": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/CarouselResponse",
"description": "Image carousel to show alongside the response"
}
]
}
}
},
"AgenticUnparkPayload": {
"type": "object",
"description": "Unpark payload for agentic activity - user continues conversation via orchestrator",
"required": [
"query"
],
"properties": {
"query": {
"$ref": "#/$defs/UserResponse",
"description": "User's query to continue the conversation"
}
}
},
"AiCloudItemMeta": {
"type": "object",
"description": "AI Cloud-specific metadata for a conversation message",
"required": [
"customer_key",
"project_key",
"culture"
],
"properties": {
"article_ids": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"context_variables": {},
"conversation_variables": {},
"culture": {
"type": "string"
},
"customer_key": {
"type": "string"
},
"entity_matches": {},
"intent_info": {},
"is_fallback": {
"type": [
"boolean",
"null"
]
},
"main_interaction_type": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/MainInteractionType"
}
]
},
"pages": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Pages"
}
]
},
"project_key": {
"type": "string"
},
"recognition_quality": {
"type": [
"number",
"null"
],
"format": "double"
},
"recognition_type": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/RecognitionType"
}
]
},
"stop_words": {},
"translation": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/TranslationDetails"
}
]
}
}
},
"AiCloudMessage": {
"allOf": [
{
"type": "object",
"description": "Base fields shared by all message types",
"properties": {
"actor": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Actor",
"description": "The participant who authored this item, when the role alone is ambiguous."
}
]
},
"content": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MessageContentPart"
}
},
"interaction_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"is_message_before_halo": {
"type": "boolean"
},
"timestamp": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time at which the conversation item was first produced. Legacy items\nwithout valid initialization metadata fall back to their logging time."
}
}
},
{
"type": "object",
"properties": {
"aicloud_meta": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/AiCloudItemMeta"
}
]
},
"tool_results": {
"type": "array",
"items": {
"$ref": "#/$defs/ToolResult"
}
},
"tool_uses": {
"type": "array",
"items": {
"$ref": "#/$defs/ToolUse"
}
}
}
}
],
"description": "AI Cloud message"
},
"AssistantMessage": {
"allOf": [
{
"type": "object",
"description": "Base fields shared by all message types",
"properties": {
"actor": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Actor",
"description": "The participant who authored this item, when the role alone is ambiguous."
}
]
},
"content": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MessageContentPart"
}
},
"interaction_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"is_message_before_halo": {
"type": "boolean"
},
"timestamp": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time at which the conversation item was first produced. Legacy items\nwithout valid initialization metadata fall back to their logging time."
}
}
},
{
"type": "object",
"properties": {
"aicloud_meta": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/AiCloudItemMeta"
}
]
},
"source": {
"type": [
"string",
"null"
]
}
}
}
],
"description": "Generic assistant message"
},
"CarouselItem": {
"type": "object",
"required": [
"image_src",
"image_alt"
],
"properties": {
"buttons": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/CarouselItemButton"
}
},
"description": {
"type": [
"string",
"null"
]
},
"image_alt": {
"type": "string"
},
"image_src": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
}
}
},
"CarouselItemButton": {
"type": "object",
"required": [
"text",
"value"
],
"properties": {
"text": {
"type": "string"
},
"value": {
"type": "string"
}
}
},
"CarouselResponse": {
"type": "object",
"properties": {
"carousel": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/CarouselItem"
}
}
}
},
"ContentPart": {
"oneOf": [
{
"type": "object",
"required": [
"text",
"type"
],
"properties": {
"text": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"text"
]
}
}
},
{
"type": "object",
"required": [
"text",
"type"
],
"properties": {
"redacted": {
"type": "boolean"
},
"signature": {
"type": [
"string",
"null"
]
},
"text": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"thinking"
]
}
}
},
{
"type": "object",
"required": [
"json_value",
"type"
],
"properties": {
"json_value": {
"$ref": "#/$defs/Value"
},
"type": {
"type": "string",
"enum": [
"json"
]
}
}
},
{
"allOf": [
{
"$ref": "#/$defs/MediaContentPart"
},
{
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"media"
]
}
}
}
]
},
{
"type": "object",
"description": "OpenAI Responses API `phase: \"commentary\"` text: an intermediate\npreamble emitted before a tool call, distinct from the turn's final\nanswer. Plain assistant-authored text, not hidden reasoning like\n`Thinking`.",
"required": [
"text",
"type"
],
"properties": {
"text": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"commentary"
]
}
}
}
]
},
"ContextValue": {
"oneOf": [
{
"type": "object",
"required": [
"Plain"
],
"properties": {
"Plain": {
"type": "string"
}
}
},
{
"type": "object",
"description": "A sensitive string (masked in debug output).\n\n- `is_external: true` — the value came from an external source (e.g. user/API input)\n No decryption is needed.\n- `is_external: false` — the value is internally managed (e.g. a database default)\n and is stored encrypted. It must be decrypted before use.",
"required": [
"Secret"
],
"properties": {
"Secret": {
"type": "object",
"description": "A sensitive string (masked in debug output).\n\n- `is_external: true` — the value came from an external source (e.g. user/API input)\n No decryption is needed.\n- `is_external: false` — the value is internally managed (e.g. a database default)\n and is stored encrypted. It must be decrypted before use.",
"required": [
"value",
"is_external"
],
"properties": {
"is_external": {
"type": "boolean"
},
"value": {
"type": "string"
}
}
}
}
}
],
"description": "Value of context\n- Plain: A non-sensitive string (media and structured data stored as JSON strings)\n- Secret: A sensitive string (not printed in debug)"
},
"Contexts": {
"type": "object",
"description": "Type alias for a mapping from strings to context values",
"additionalProperties": {
"$ref": "#/$defs/ContextValue"
},
"propertyNames": {
"type": "string"
}
},
"ConversationFeedback": {
"type": "string",
"description": "Enum for conversation feedback rating in API responses",
"enum": [
"FEEDBACK_VERY_SATISFIED",
"FEEDBACK_SATISFIED",
"FEEDBACK_NEUTRAL",
"FEEDBACK_UNSATISFIED",
"FEEDBACK_VERY_UNSATISFIED",
"FEEDBACK_NOT_GIVEN"
]
},
"ConversationOption": {
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
}
}
},
"ConversationOptionsContentPart": {
"type": "object",
"description": "Conversation options (buttons) content part",
"required": [
"conversation_options"
],
"properties": {
"conversation_options": {
"type": "array",
"items": {
"$ref": "#/$defs/ConversationOption"
}
}
}
},
"ConversationResolution": {
"type": "string",
"description": "Enum for conversation resolution status in API responses",
"enum": [
"RESOLUTION_SUCCESSFUL",
"RESOLUTION_HANDOVER",
"RESOLUTION_UNSUCCESSFUL",
"RESOLUTION_UNDETERMINED",
"RESOLUTION_PENDING"
]
},
"CustomGuardrailResult": {
"type": "object",
"required": [
"input",
"prompt",
"result"
],
"properties": {
"input": {
"type": "string"
},
"prompt": {
"type": "string"
},
"request_type": {
"type": "string"
},
"result": {
"$ref": "#/$defs/CustomGuardrailResultType"
},
"rewritten_input": {
"type": [
"string",
"null"
]
},
"usage": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/UsageDetails"
}
]
}
}
},
"CustomGuardrailResultType": {
"type": "string",
"description": "Custom guardrail result type",
"enum": [
"continue",
"stop",
"rewrite"
]
},
"CustomerServiceAgentInstructionMessage": {
"allOf": [
{
"type": "object",
"description": "Base fields shared by all message types",
"properties": {
"actor": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Actor",
"description": "The participant who authored this item, when the role alone is ambiguous."
}
]
},
"content": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MessageContentPart"
}
},
"interaction_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"is_message_before_halo": {
"type": "boolean"
},
"timestamp": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time at which the conversation item was first produced. Legacy items\nwithout valid initialization metadata fall back to their logging time."
}
}
},
{
"type": "object",
"required": [
"is_classified_as_instruction"
],
"properties": {
"custom_guardrail_results": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/CustomGuardrailResult"
}
},
"is_classified_as_instruction": {
"type": "boolean"
},
"is_recognized": {
"type": [
"boolean",
"null"
]
}
}
}
],
"description": "Customer service agent instruction message"
},
"CustomerServiceAgentMessage": {
"allOf": [
{
"type": "object",
"description": "Base fields shared by all message types",
"properties": {
"actor": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Actor",
"description": "The participant who authored this item, when the role alone is ambiguous."
}
]
},
"content": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MessageContentPart"
}
},
"interaction_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"is_message_before_halo": {
"type": "boolean"
},
"timestamp": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time at which the conversation item was first produced. Legacy items\nwithout valid initialization metadata fall back to their logging time."
}
}
}
],
"description": "Customer service agent message"
},
"DematerializedMediaContentPart": {
"type": "object",
"required": [
"mime_type",
"data_uri",
"data_hash"
],
"properties": {
"data_hash": {
"type": "string"
},
"data_uri": {
"$ref": "#/$defs/MediaDataUri"
},
"metadata": {
"$ref": "#/$defs/Value"
},
"mime_type": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
}
}
},
"ErrorResponse": {
"type": "object",
"required": [
"type",
"title"
],
"properties": {
"detail": {
"type": [
"object",
"null"
]
},
"instance": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
},
"type": {
"type": "string"
}
}
},
"ExternalHandoverMessage": {
"allOf": [
{
"type": "object",
"description": "Base fields shared by all message types",
"properties": {
"actor": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Actor",
"description": "The participant who authored this item, when the role alone is ambiguous."
}
]
},
"content": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MessageContentPart"
}
},
"interaction_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"is_message_before_halo": {
"type": "boolean"
},
"timestamp": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time at which the conversation item was first produced. Legacy items\nwithout valid initialization metadata fall back to their logging time."
}
}
},
{
"type": "object",
"properties": {
"handover_details": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/HandoverDetails"
}
]
}
}
}
],
"description": "External handover message"
},
"Feedback": {
"type": "object",
"required": [
"feedback_id",
"profile_id",
"account_id",
"conversation_id",
"interaction_id",
"original_answer",
"feedback",
"distance",
"feedback_reason"
],
"properties": {
"account_id": {
"type": "string",
"format": "uuid"
},
"conversation_id": {
"type": "string",
"format": "uuid"
},
"distance": {
"type": "number",
"format": "double"
},
"feedback": {
"type": "string"
},
"feedback_id": {
"$ref": "#/$defs/i64"
},
"feedback_reason": {
"$ref": "#/$defs/FeedbackReason"
},
"interaction_id": {
"type": "string",
"format": "uuid"
},
"original_answer": {
"type": "string"
},
"profile_id": {
"$ref": "#/$defs/i64"
}
}
},
"FeedbackReason": {
"type": "string",
"enum": [
"wrongly-formulated",
"incorrect",
"do-not-answer"
]
},
"FunctionUseArgument": {
"type": "object",
"required": [
"parameter",
"value"
],
"properties": {
"parameter": {
"type": "string"
},
"value": {
"$ref": "#/$defs/Value"
}
}
},
"HaloMessage": {
"allOf": [
{
"type": "object",
"description": "Base fields shared by all message types",
"properties": {
"actor": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/$defs/Actor",
"description": "The participant who authored this item, when the role alone is ambiguous."
}
]
},
"content": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MessageContentPart"
}
},
"interaction_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"is_message_before_halo": {
"type": "boolean"
},
"timestamp": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Time at which the conversation item was first produced. Legacy items\nwithout valid initialization metadata fall back to their logging time."
}
}
},
{
"type": "object",
"required": [
"can_get_feedback",
"answering_user_interaction",
"used_language_detection",
"is_welcome_tool_trigger",
"is_fallback_tool_trigger",
"is_breakout"
],
"properties": {
"agent_results": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/AgentResult"
}
},
"answer_after_answer_style": {
"type": [
"string",
"null"
]
},
"answer_after_feedback": {
"type": [
"string",
"null"
]
},
"answer_before_answer_style": {
"type": [
"string",
"null"
]
},
"answer_before_feedback": {
"type": [
"string",
"null"
]
},
"answering_user_interaction": {
"type": "boolean"
},
"can_get_feedback": {
"type": "boolean"
},
# --- truncated at 32 KB (77 KB total) ---
# Full source: https://artifacts.apis.io/cm-com/json-schema/cm-com-conversation-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/cm-com-conversation"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.