Hypamoon · Schema

CallTimeline

The timeline of a call: its legs, its events, the outcome and who answered.

Artificial IntelligenceCollaborationProductivityPlatformLow-Code

Properties

Name Type Description
call_id string The call you asked for.
outcome string How the call went, the same way the portal says it: answered, missed (inbound and nobody picked up), no_answer (outbound and nobody picked up), voicemail, assistant (the voice AI handled it), in_progr
answered_by object Who on your side picked up: the first forward that was answered, else the assistant when it handled the call, else null.
legs array The legs, primary first, then the forwards oldest first.
events array What happened, oldest first.
View JSON Schema on GitHub

JSON Schema

hypamoon-com-call-timeline-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hypamoon-com/json-schema/hypamoon-com-call-timeline-schema.json",
  "title": "CallTimeline",
  "description": "The timeline of a call: its legs, its events, the outcome and who answered.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hypamoon-com-openapi.json#/components/schemas/CallTimeline",
  "type": "object",
  "properties": {
    "call_id": {
      "type": "string",
      "format": "uuid",
      "description": "The call you asked for."
    },
    "outcome": {
      "type": "string",
      "enum": [
        "answered",
        "missed",
        "no_answer",
        "voicemail",
        "assistant",
        "in_progress",
        "failed",
        "unknown"
      ],
      "description": "How the call went, the same way the portal says it: answered, missed (inbound and nobody picked up), no_answer (outbound and nobody picked up), voicemail, assistant (the voice AI handled it), in_progress, failed or unknown."
    },
    "answered_by": {
      "anyOf": [
        {
          "anyOf": [
            {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "number"
                    },
                    "number": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The number the call was forwarded to, in E.164."
                    }
                  },
                  "required": [
                    "type",
                    "number"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "const": "device"
                    },
                    "user_id": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "The member whose app or web phone it was (the user_id from list_members), or null when it is not known."
                    }
                  },
                  "required": [
                    "type",
                    "user_id"
                  ],
                  "additionalProperties": false
                }
              ],
              "description": "Where a leg went: a phone number, or the app or web phone of a member."
            },
            {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "const": "assistant"
                }
              },
              "required": [
                "type"
              ],
              "additionalProperties": false
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Who on your side picked up: the first forward that was answered, else the assistant when it handled the call, else null."
    },
    "legs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "leg_id": {
            "type": "string",
            "format": "uuid",
            "description": "The id of this leg. For the primary leg and a forward to a number this is also a call id in GET /calls."
          },
          "role": {
            "type": "string",
            "enum": [
              "primary",
              "forward"
            ],
            "description": "primary: the caller (inbound) or the person called (outbound). forward: a forward by the call plan or a transfer."
          },
          "direction": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "inbound",
              "outbound",
              null
            ],
            "description": "The direction of this leg."
          },
          "target": {
            "anyOf": [
              {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "number"
                      },
                      "number": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "The number the call was forwarded to, in E.164."
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "const": "device"
                      },
                      "user_id": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "The member whose app or web phone it was (the user_id from list_members), or null when it is not known."
                      }
                    },
                    "required": [
                      "type",
                      "user_id"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Where a leg went: a phone number, or the app or web phone of a member."
              },
              {
                "type": "null"
              }
            ],
            "description": "Where a forward went. Null for the primary leg."
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "The status of this leg, like the status of a call."
          },
          "started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When this leg started ringing."
          },
          "answered_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When this leg was answered."
          },
          "ended_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When this leg ended."
          },
          "hangup_cause": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why this leg ended, as reported by the carrier, like normal_clearing or timeout."
          }
        },
        "required": [
          "leg_id",
          "role",
          "direction",
          "target",
          "status",
          "started_at",
          "answered_at",
          "ended_at",
          "hangup_cause"
        ],
        "additionalProperties": false,
        "description": "One leg of a call."
      },
      "description": "The legs, primary first, then the forwards oldest first."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "call.started",
              "call.answered",
              "call.ended",
              "forward.started",
              "forward.answered",
              "forward.ended"
            ],
            "description": "call.started, call.answered (the platform picked up; with a call plan it always does first), call.ended, and per forward forward.started, forward.answered (someone picked up there) and forward.ended."
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "description": "When it happened."
          },
          "leg_id": {
            "type": "string",
            "format": "uuid",
            "description": "The leg it happened on (legs[].leg_id)."
          },
          "hangup_cause": {
            "type": [
              "string",
              "null"
            ],
            "description": "Only on call.ended and forward.ended."
          }
        },
        "required": [
          "type",
          "occurred_at",
          "leg_id"
        ],
        "additionalProperties": false
      },
      "description": "What happened, oldest first."
    }
  },
  "required": [
    "call_id",
    "outcome",
    "answered_by",
    "legs",
    "events"
  ],
  "additionalProperties": false
}

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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/hypamoon-com-call-timeline"
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.