{
  "openapi": "3.1.0",
  "info": {
    "title": "Gauge API",
    "version": "2026-10-21",
    "description": "The Gauge public API, version 2. Every request needs an API key; every response carries `X-Request-Id`. Send `Gauge-Version: 2026-10-21` to pin this version. Errors share one envelope (`Error`); lists share one page shape (`Page`)."
  },
  "servers": [
    {
      "url": "https://app.gauge.chat/backend"
    }
  ],
  "tags": [
    {
      "name": "Account",
      "description": "The key itself."
    },
    {
      "name": "Connections",
      "description": "Connected channels and what each can send."
    },
    {
      "name": "Contacts",
      "description": "The workspace’s contacts, their identities, tags and custom fields."
    },
    {
      "name": "Conversations",
      "description": "Conversations the key’s member can see, and what can be done to them."
    },
    {
      "name": "Messages",
      "description": "Send messages and follow their delivery."
    },
    {
      "name": "Media",
      "description": "Upload files to send."
    },
    {
      "name": "Templates",
      "description": "Approved WhatsApp templates."
    },
    {
      "name": "Webhooks",
      "description": "Endpoints that receive events, signed with `Gauge-Signature`. Deliveries are at-least-once: dedupe on the event `id` (also in `Gauge-Event-Id`). Order is NOT guaranteed, not even within one conversation — use `occurredAt` and the snapshot in the payload. A non-2xx answer is retried after 30 s, 5 min, 1 h and 6 h. An endpoint failing every delivery for 3 days is switched off and its owner is told."
    },
    {
      "name": "Events",
      "description": "The last 30 days of events, and redelivery."
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "An API key from Developers → API keys: `Authorization: Bearer gauge_live_…` (or `pulse_k_live_…`)."
      }
    },
    "headers": {
      "X-Request-Id": {
        "description": "This request’s id. Quote it to support; it is also in every error body.",
        "schema": {
          "type": "string"
        }
      },
      "Gauge-Version": {
        "description": "The dated API version this response follows.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimit-Limit": {
        "description": "Requests per minute in the tighter of the key and workspace buckets.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimit-Remaining": {
        "description": "Requests left in that bucket.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimit-Reset": {
        "description": "Seconds until that bucket is full again.",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "validation_failed",
                  "unauthorized",
                  "key_owner_inactive",
                  "forbidden",
                  "insufficient_scope",
                  "not_found",
                  "conflict",
                  "idempotency_mismatch",
                  "rate_limited",
                  "plan_required",
                  "workspace_suspended",
                  "payload_too_large",
                  "unsupported_channel_action",
                  "media_unavailable",
                  "internal"
                ]
              },
              "message": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "details": {},
              "requestId": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message",
              "requestId"
            ]
          }
        },
        "required": [
          "error"
        ],
        "description": "The one error envelope. Branch on `error.code`."
      },
      "Page": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {}
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as `after` for the next page; null on the last page."
          },
          "prevCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as `before` for the previous page; null on the first page."
          }
        },
        "required": [
          "data",
          "nextCursor",
          "prevCursor"
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "Connection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "capabilities": {
            "type": "object",
            "properties": {
              "sendText": {
                "type": "boolean"
              },
              "sendMedia": {
                "type": "boolean"
              },
              "sendTemplates": {
                "type": "boolean"
              },
              "sendInteractive": {
                "type": "boolean"
              },
              "quotedReplies": {
                "type": "boolean"
              },
              "startConversations": {
                "type": "boolean"
              },
              "broadcast": {
                "type": "boolean"
              },
              "delivery": {
                "type": "string",
                "enum": [
                  "immediate",
                  "queued",
                  "none"
                ]
              }
            },
            "required": [
              "sendText",
              "sendMedia",
              "sendTemplates",
              "sendInteractive",
              "quotedReplies",
              "startConversations",
              "broadcast",
              "delivery"
            ]
          },
          "flags": {
            "type": "object",
            "additionalProperties": {
              "type": "boolean"
            }
          },
          "warning": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "whatsapp_web_ban_risk"
                ]
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ]
          },
          "limits": {
            "type": "object",
            "properties": {
              "sessionWindowHours": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "templateRequiredOutsideWindow": {
                "type": "boolean"
              },
              "sendCaps": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "perMinute": {
                    "type": "integer"
                  },
                  "perDay": {
                    "type": "integer"
                  },
                  "warmupTier": {
                    "type": "integer"
                  }
                },
                "required": [
                  "perMinute",
                  "perDay",
                  "warmupTier"
                ]
              },
              "maxMediaBytes": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "sessionWindowHours",
              "templateRequiredOutsideWindow",
              "sendCaps",
              "maxMediaBytes"
            ]
          }
        },
        "required": [
          "id",
          "kind",
          "displayName",
          "status",
          "createdAt",
          "capabilities",
          "flags",
          "warning",
          "limits"
        ]
      },
      "Me": {
        "type": "object",
        "properties": {
          "key": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              },
              "prefix": {
                "type": "string"
              },
              "environment": {
                "type": "string",
                "enum": [
                  "live",
                  "test"
                ]
              },
              "scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "pinnedAppId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "allowedCidrs": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": "string"
                }
              },
              "expiresAt": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "createdAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "prefix",
              "environment",
              "scopes",
              "pinnedAppId",
              "allowedCidrs",
              "expiresAt",
              "createdAt"
            ]
          },
          "member": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "teamIds": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            },
            "required": [
              "id",
              "name",
              "teamIds"
            ]
          },
          "workspace": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              },
              "plan": {
                "type": "string",
                "enum": [
                  "growth",
                  "scale"
                ]
              }
            },
            "required": [
              "id",
              "name",
              "plan"
            ]
          },
          "apiVersion": {
            "type": "string"
          },
          "rateLimit": {
            "type": "object",
            "properties": {
              "limit": {
                "type": "integer",
                "minimum": 0
              },
              "remaining": {
                "type": "integer",
                "minimum": 0
              },
              "resetSeconds": {
                "type": "integer",
                "minimum": 0
              },
              "workspaceLimit": {
                "type": "integer",
                "minimum": 0
              },
              "workspaceRemaining": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "limit",
              "remaining",
              "resetSeconds",
              "workspaceLimit",
              "workspaceRemaining"
            ]
          }
        },
        "required": [
          "key",
          "member",
          "workspace",
          "apiVersion",
          "rateLimit"
        ]
      },
      "ConnectionPage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "Contact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "displayName": {
            "type": [
              "string",
              "null"
            ]
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "companyId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "companyName": {
            "type": [
              "string",
              "null"
            ]
          },
          "lifecycleStage": {
            "type": "string"
          },
          "isVip": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "customFields": {
            "type": "object",
            "additionalProperties": {}
          },
          "identities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "channel": {
                  "type": "string"
                },
                "externalId": {
                  "type": "string"
                },
                "connectionId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uuid"
                }
              },
              "required": [
                "id",
                "channel",
                "externalId",
                "connectionId"
              ]
            }
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "displayName",
          "email",
          "phone",
          "title",
          "companyId",
          "companyName",
          "lifecycleStage",
          "isVip",
          "tags",
          "customFields",
          "identities",
          "createdAt",
          "updatedAt"
        ]
      },
      "Conversation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "snoozed",
              "resolved"
            ]
          },
          "snoozedUntil": {
            "type": [
              "string",
              "null"
            ]
          },
          "channel": {
            "type": "string"
          },
          "connectionId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "displayName": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "id",
              "displayName"
            ]
          },
          "assigneeId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "teamId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "topicId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "appId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "integrationId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "priority": {
            "type": "integer"
          },
          "unread": {
            "type": "boolean"
          },
          "needsReply": {
            "type": "boolean"
          },
          "lastMessageAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastInboundAt": {
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "status",
          "snoozedUntil",
          "channel",
          "connectionId",
          "contact",
          "assigneeId",
          "teamId",
          "topicId",
          "appId",
          "integrationId",
          "tags",
          "priority",
          "unread",
          "needsReply",
          "lastMessageAt",
          "lastInboundAt",
          "createdAt",
          "updatedAt"
        ]
      },
      "Message": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "message",
              "note"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "inbound",
              "outbound",
              "internal",
              "system"
            ]
          },
          "authorType": {
            "type": "string"
          },
          "authorMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "failureReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "mime": {
                "type": "string"
              },
              "filename": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "mediaId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              }
            },
            "required": [
              "mime",
              "filename",
              "mediaId"
            ]
          },
          "template": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "language": {
                "type": "string"
              }
            },
            "required": [
              "name",
              "language"
            ]
          },
          "via": {
            "type": [
              "string",
              "null"
            ]
          },
          "replyToMessageId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "metadata": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            }
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "conversationId",
          "type",
          "direction",
          "authorType",
          "authorMemberId",
          "kind",
          "text",
          "status",
          "failureReason",
          "media",
          "template",
          "via",
          "replyToMessageId",
          "metadata",
          "createdAt"
        ]
      },
      "Template": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "connectionId": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "components": {},
          "variables": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rejectionReason": {
            "type": [
              "string",
              "null"
            ]
          },
          "qualityRating": {
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "type": "string"
          },
          "updatedAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "connectionId",
          "name",
          "language",
          "category",
          "status",
          "body",
          "variables",
          "rejectionReason",
          "qualityRating",
          "createdAt",
          "updatedAt"
        ]
      },
      "ContactIdentity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "channel": {
            "type": "string"
          },
          "externalId": {
            "type": "string"
          },
          "connectionId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "id",
          "channel",
          "externalId",
          "connectionId"
        ]
      },
      "ContactPage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "ContactIdentityList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ContactIdentity"
        }
      },
      "ContactMerge": {
        "type": "object",
        "properties": {
          "mergeId": {
            "type": "string",
            "format": "uuid"
          },
          "survivorId": {
            "type": "string",
            "format": "uuid"
          },
          "sourceId": {
            "type": "string",
            "format": "uuid"
          },
          "undoableUntil": {
            "type": "string"
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "displayName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "email": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "phone": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "title": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "companyId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "companyName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "lifecycleStage": {
                "type": "string"
              },
              "isVip": {
                "type": "boolean"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "customFields": {
                "type": "object",
                "additionalProperties": {}
              },
              "identities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "channel": {
                      "type": "string"
                    },
                    "externalId": {
                      "type": "string"
                    },
                    "connectionId": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "uuid"
                    }
                  },
                  "required": [
                    "id",
                    "channel",
                    "externalId",
                    "connectionId"
                  ]
                }
              },
              "createdAt": {
                "type": "string"
              },
              "updatedAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "displayName",
              "email",
              "phone",
              "title",
              "companyId",
              "companyName",
              "lifecycleStage",
              "isVip",
              "tags",
              "customFields",
              "identities",
              "createdAt",
              "updatedAt"
            ]
          }
        },
        "required": [
          "mergeId",
          "survivorId",
          "sourceId",
          "undoableUntil",
          "contact"
        ]
      },
      "ContactErasure": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "erased": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "erasedAt": {
            "type": "string"
          },
          "identitiesDeleted": {
            "type": "integer"
          },
          "messagesRedacted": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "erased",
          "erasedAt",
          "identitiesDeleted",
          "messagesRedacted"
        ]
      },
      "ConversationPage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Conversation"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "Note": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "authorMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "messageId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "body": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "conversationId",
          "authorMemberId",
          "messageId",
          "body",
          "createdAt"
        ]
      },
      "ReadMarker": {
        "type": "object",
        "properties": {
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "lastReadAt": {
            "type": "string"
          }
        },
        "required": [
          "conversationId",
          "lastReadAt"
        ]
      },
      "MessagePage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Message"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "SendMessageResult": {
        "type": "object",
        "properties": {
          "message": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "conversationId": {
                "type": "string",
                "format": "uuid"
              },
              "type": {
                "type": "string",
                "enum": [
                  "message",
                  "note"
                ]
              },
              "direction": {
                "type": "string",
                "enum": [
                  "inbound",
                  "outbound",
                  "internal",
                  "system"
                ]
              },
              "authorType": {
                "type": "string"
              },
              "authorMemberId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "kind": {
                "type": "string"
              },
              "text": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "type": "string"
              },
              "failureReason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "media": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "mime": {
                    "type": "string"
                  },
                  "filename": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "mediaId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  }
                },
                "required": [
                  "mime",
                  "filename",
                  "mediaId"
                ]
              },
              "template": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "language": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "language"
                ]
              },
              "via": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "replyToMessageId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "metadata": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": {
                  "type": "string"
                }
              },
              "createdAt": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "conversationId",
              "type",
              "direction",
              "authorType",
              "authorMemberId",
              "kind",
              "text",
              "status",
              "failureReason",
              "media",
              "template",
              "via",
              "replyToMessageId",
              "metadata",
              "createdAt"
            ]
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "whatsapp_web_unofficial"
              ]
            }
          }
        },
        "required": [
          "message",
          "conversationId",
          "status",
          "warnings"
        ]
      },
      "MessageStatusHistory": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "history": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string"
                },
                "occurredAt": {
                  "type": "string"
                },
                "failureReason": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "status",
                "occurredAt",
                "failureReason"
              ]
            }
          }
        },
        "required": [
          "messageId",
          "status",
          "history"
        ]
      },
      "Media": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "contentType": {
            "type": "string"
          },
          "sizeBytes": {
            "type": "integer"
          },
          "filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "uploaded"
            ]
          },
          "createdAt": {
            "type": "string"
          },
          "expiresAt": {
            "type": "string"
          },
          "upload": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "method": {
                "type": "string",
                "enum": [
                  "PUT"
                ]
              },
              "headers": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "expiresAt": {
                "type": "string"
              }
            },
            "required": [
              "url",
              "method",
              "headers",
              "expiresAt"
            ]
          },
          "download": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "expiresAt": {
                "type": "string"
              }
            },
            "required": [
              "url",
              "expiresAt"
            ]
          }
        },
        "required": [
          "id",
          "contentType",
          "sizeBytes",
          "filename",
          "status",
          "createdAt",
          "expiresAt",
          "upload",
          "download"
        ]
      },
      "MessageAttachment": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "index": {
            "type": "integer",
            "minimum": 0
          },
          "contentType": {
            "type": "string"
          },
          "filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "sizeBytes": {
            "type": [
              "integer",
              "null"
            ],
            "exclusiveMinimum": 0
          },
          "download": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "expiresAt": {
                "type": "string"
              }
            },
            "required": [
              "url",
              "expiresAt"
            ]
          }
        },
        "required": [
          "messageId",
          "index",
          "contentType",
          "filename",
          "sizeBytes",
          "download"
        ]
      },
      "TemplatePage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Template"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "WebhookEndpoint": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Exact event names, `family.*` prefixes, or `*`."
          },
          "connectionIds": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Only events on these connections; null for every connection."
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Only events of this App; null for every App and none."
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "The payload version. Null on endpoints created before API v2 (support events only)."
          },
          "enabled": {
            "type": "boolean"
          },
          "disabledReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "consecutive_failures"
            ],
            "description": "Set when Gauge switched the endpoint off after failing for days."
          },
          "disabledAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "ownerMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Whose visibility the endpoint has: it only receives conversations this member can see."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "secretRotatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "previousSecretExpiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "lastDeliveryStatus": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "pending",
              "delivering",
              "delivered",
              "failed",
              "dead"
            ]
          },
          "lastDeliveryAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "successRate24h": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1
          }
        },
        "required": [
          "id",
          "url",
          "events",
          "connectionIds",
          "projectId",
          "apiVersion",
          "enabled",
          "disabledReason",
          "disabledAt",
          "ownerMemberId",
          "createdAt",
          "secretRotatedAt",
          "previousSecretExpiresAt",
          "lastDeliveryStatus",
          "lastDeliveryAt",
          "successRate24h"
        ]
      },
      "WebhookDelivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "endpointId": {
            "type": "string",
            "format": "uuid"
          },
          "eventId": {
            "type": [
              "string",
              "null"
            ]
          },
          "event": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "delivering",
              "delivered",
              "failed",
              "dead"
            ]
          },
          "attempt": {
            "type": "integer",
            "minimum": 0
          },
          "responseCode": {
            "type": [
              "integer",
              "null"
            ]
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          },
          "latencyMs": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "nextRetryAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "attemptedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "endpointId",
          "eventId",
          "event",
          "status",
          "attempt",
          "responseCode",
          "error",
          "latencyMs",
          "nextRetryAt",
          "createdAt",
          "attemptedAt"
        ]
      },
      "Event": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "conversationId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The event id. Identical on every retry and redelivery: dedupe on it."
              },
              "event": {
                "type": "string"
              },
              "livemode": {
                "type": "boolean",
                "description": "False for events about sandbox data."
              },
              "workspaceId": {
                "type": "string",
                "format": "uuid"
              },
              "entity": {
                "type": "string"
              },
              "entityId": {
                "type": "string"
              },
              "occurredAt": {
                "type": "string",
                "format": "date-time"
              },
              "payload": {
                "type": "object",
                "additionalProperties": {}
              }
            },
            "required": [
              "id",
              "event",
              "livemode",
              "workspaceId",
              "entity",
              "entityId",
              "occurredAt",
              "payload"
            ],
            "description": "The body that was (or would be) delivered."
          }
        },
        "required": [
          "id",
          "type",
          "conversationId",
          "createdAt",
          "data"
        ]
      },
      "WebhookEnvelope": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The event id. Identical on every retry and redelivery: dedupe on it."
          },
          "event": {
            "type": "string"
          },
          "livemode": {
            "type": "boolean",
            "description": "False for events about sandbox data."
          },
          "workspaceId": {
            "type": "string",
            "format": "uuid"
          },
          "entity": {
            "type": "string"
          },
          "entityId": {
            "type": "string"
          },
          "occurredAt": {
            "type": "string",
            "format": "date-time"
          },
          "payload": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "event",
          "livemode",
          "workspaceId",
          "entity",
          "entityId",
          "occurredAt",
          "payload"
        ],
        "description": "Every delivery body. Bodies over 64 KB are cut: `payload.truncated: true` with a `fetchUrl`. Verify the signature on the raw bytes before parsing."
      },
      "WebhookEndpointWithSecret": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Exact event names, `family.*` prefixes, or `*`."
          },
          "connectionIds": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Only events on these connections; null for every connection."
          },
          "projectId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Only events of this App; null for every App and none."
          },
          "apiVersion": {
            "type": [
              "string",
              "null"
            ],
            "description": "The payload version. Null on endpoints created before API v2 (support events only)."
          },
          "enabled": {
            "type": "boolean"
          },
          "disabledReason": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "consecutive_failures"
            ],
            "description": "Set when Gauge switched the endpoint off after failing for days."
          },
          "disabledAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "ownerMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "Whose visibility the endpoint has: it only receives conversations this member can see."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "secretRotatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "previousSecretExpiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "lastDeliveryStatus": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "pending",
              "delivering",
              "delivered",
              "failed",
              "dead"
            ]
          },
          "lastDeliveryAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "successRate24h": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 1
          },
          "secret": {
            "type": "string",
            "description": "The signing secret. Shown once: store it now."
          }
        },
        "required": [
          "id",
          "url",
          "events",
          "connectionIds",
          "projectId",
          "apiVersion",
          "enabled",
          "disabledReason",
          "disabledAt",
          "ownerMemberId",
          "createdAt",
          "secretRotatedAt",
          "previousSecretExpiresAt",
          "lastDeliveryStatus",
          "lastDeliveryAt",
          "successRate24h",
          "secret"
        ]
      },
      "WebhookEndpointPage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WebhookEndpoint"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "WebhookDeliveryPage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/WebhookDelivery"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "WebhookSecret": {
        "type": "object",
        "properties": {
          "secret": {
            "type": "string",
            "description": "The new signing secret. Shown once."
          },
          "previousSecretExpiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "required": [
          "secret",
          "previousSecretExpiresAt"
        ]
      },
      "WebhookTestResult": {
        "type": "object",
        "properties": {
          "delivered": {
            "type": "boolean"
          },
          "responseCode": {
            "type": [
              "integer",
              "null"
            ]
          },
          "deliveryId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "event": {
            "type": "string"
          },
          "latencyMs": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "delivered",
          "responseCode",
          "deliveryId",
          "event",
          "latencyMs",
          "error"
        ]
      },
      "Deleted": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "deleted": {
            "type": "boolean",
            "enum": [
              true
            ]
          }
        },
        "required": [
          "id",
          "deleted"
        ]
      },
      "EventPage": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Page"
          },
          {
            "type": "object",
            "properties": {
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          }
        ],
        "description": "A cursor page over (created_at, id). Every list returns this shape."
      },
      "RedeliverResult": {
        "type": "object",
        "properties": {
          "redelivered": {
            "type": "integer",
            "minimum": 0
          },
          "deliveries": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "endpointId": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "required": [
                "id",
                "endpointId"
              ]
            }
          }
        },
        "required": [
          "redelivered",
          "deliveries"
        ]
      },
      "Event_message_received": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "connection": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "channel": {
                "type": "string",
                "enum": [
                  "whatsapp",
                  "instagram",
                  "messenger",
                  "email",
                  "discord",
                  "x",
                  "webchat",
                  "sms",
                  "voice"
                ],
                "description": "The channel family, e.g. `whatsapp`."
              },
              "kind": {
                "type": "string",
                "description": "The connection kind, e.g. `whatsapp_cloud` or `whatsapp_web`."
              }
            },
            "required": [
              "id",
              "channel",
              "kind"
            ],
            "additionalProperties": false
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "identities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "The channel kind the handle belongs to."
                    },
                    "externalId": {
                      "type": "string",
                      "description": "The handle on that channel: a phone number, an email address, a visitor id."
                    }
                  },
                  "required": [
                    "channel",
                    "externalId"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "id",
              "name",
              "identities"
            ],
            "additionalProperties": false
          },
          "kind": {
            "type": "string",
            "description": "`text`, `image`, `audio`, `document`, `interactive`, …"
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The attachment's position on the message (0 today: a message carries one file)."
                },
                "url": {
                  "type": "string",
                  "pattern": "^\\/v2\\/messages\\/[0-9a-f-]{36}\\/attachments\\/\\d+$",
                  "description": "The API path that answers a short-lived signed download: `GET /v2/messages/{messageId}/attachments/{index}` (needs `messages:read`)."
                },
                "mediaId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uuid",
                  "description": "The `POST /v2/media` id when the file was uploaded through the API (readable with `GET /v2/media/{id}`); null for files a customer or an agent attached."
                },
                "contentType": {
                  "type": "string"
                },
                "size": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "exclusiveMinimum": 0,
                  "description": "Bytes, when known."
                },
                "filename": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "available": {
                  "type": "boolean",
                  "description": "False when Gauge holds no copy of the file (e.g. still being fetched from WhatsApp Web): `url` then answers 404."
                }
              },
              "required": [
                "index",
                "url",
                "mediaId",
                "contentType",
                "size",
                "filename",
                "available"
              ],
              "additionalProperties": false
            }
          },
          "reply": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "button",
                  "list"
                ]
              },
              "id": {
                "type": "string",
                "description": "The id of the button or list row the customer tapped (yours, from the interactive or template message)."
              },
              "title": {
                "type": "string"
              }
            },
            "required": [
              "type",
              "id",
              "title"
            ],
            "additionalProperties": false,
            "description": "The button or list row the customer tapped, when the message is a reply to an interactive or template message."
          },
          "quotedMessageId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "description": "The message this one quotes, when it quotes one we hold."
          },
          "app": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "additionalProperties": false,
            "description": "The Gauge App (support project) this conversation belongs to, when it belongs to one."
          },
          "receivedAt": {
            "type": "string",
            "format": "date-time"
          },
          "truncated": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Set when the body was over the size cap and `text` was cut. Fetch the full message from `fetchUrl`."
          },
          "fetchUrl": {
            "type": "string",
            "description": "The API path of the full object, present when `truncated` is set."
          }
        },
        "required": [
          "messageId",
          "conversationId",
          "connection",
          "contact",
          "kind",
          "text",
          "media",
          "reply",
          "quotedMessageId",
          "app",
          "receivedAt"
        ],
        "additionalProperties": false
      },
      "Event_message_sent": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "connection": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "channel": {
                "type": "string",
                "enum": [
                  "whatsapp",
                  "instagram",
                  "messenger",
                  "email",
                  "discord",
                  "x",
                  "webchat",
                  "sms",
                  "voice"
                ],
                "description": "The channel family, e.g. `whatsapp`."
              },
              "kind": {
                "type": "string",
                "description": "The connection kind, e.g. `whatsapp_cloud` or `whatsapp_web`."
              }
            },
            "required": [
              "id",
              "channel",
              "kind"
            ],
            "additionalProperties": false
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "identities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "The channel kind the handle belongs to."
                    },
                    "externalId": {
                      "type": "string",
                      "description": "The handle on that channel: a phone number, an email address, a visitor id."
                    }
                  },
                  "required": [
                    "channel",
                    "externalId"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "id",
              "name",
              "identities"
            ],
            "additionalProperties": false
          },
          "kind": {
            "type": "string"
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "index": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The attachment's position on the message (0 today: a message carries one file)."
                },
                "url": {
                  "type": "string",
                  "pattern": "^\\/v2\\/messages\\/[0-9a-f-]{36}\\/attachments\\/\\d+$",
                  "description": "The API path that answers a short-lived signed download: `GET /v2/messages/{messageId}/attachments/{index}` (needs `messages:read`)."
                },
                "mediaId": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "uuid",
                  "description": "The `POST /v2/media` id when the file was uploaded through the API (readable with `GET /v2/media/{id}`); null for files a customer or an agent attached."
                },
                "contentType": {
                  "type": "string"
                },
                "size": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "exclusiveMinimum": 0,
                  "description": "Bytes, when known."
                },
                "filename": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "available": {
                  "type": "boolean",
                  "description": "False when Gauge holds no copy of the file (e.g. still being fetched from WhatsApp Web): `url` then answers 404."
                }
              },
              "required": [
                "index",
                "url",
                "mediaId",
                "contentType",
                "size",
                "filename",
                "available"
              ],
              "additionalProperties": false
            }
          },
          "authorType": {
            "type": "string",
            "enum": [
              "agent",
              "ai",
              "automation",
              "system"
            ],
            "description": "Who sent it: a person, Gauge AI, or an automation/API."
          },
          "status": {
            "type": "string",
            "description": "The status when it was created, usually `queued` or `sent`."
          },
          "app": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name"
            ],
            "additionalProperties": false,
            "description": "The Gauge App (support project) this conversation belongs to, when it belongs to one."
          },
          "sentAt": {
            "type": "string",
            "format": "date-time"
          },
          "truncated": {
            "type": "boolean",
            "enum": [
              true
            ],
            "description": "Set when the body was over the size cap and `text` was cut. Fetch the full message from `fetchUrl`."
          },
          "fetchUrl": {
            "type": "string",
            "description": "The API path of the full object, present when `truncated` is set."
          }
        },
        "required": [
          "messageId",
          "conversationId",
          "connection",
          "contact",
          "kind",
          "text",
          "media",
          "authorType",
          "status",
          "app",
          "sentAt"
        ],
        "additionalProperties": false
      },
      "Event_message_status_updated": {
        "type": "object",
        "properties": {
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "connection": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "channel": {
                "type": "string",
                "enum": [
                  "whatsapp",
                  "instagram",
                  "messenger",
                  "email",
                  "discord",
                  "x",
                  "webchat",
                  "sms",
                  "voice"
                ],
                "description": "The channel family, e.g. `whatsapp`."
              },
              "kind": {
                "type": "string",
                "description": "The connection kind, e.g. `whatsapp_cloud` or `whatsapp_web`."
              }
            },
            "required": [
              "id",
              "channel",
              "kind"
            ],
            "additionalProperties": false
          },
          "status": {
            "type": "string",
            "enum": [
              "sent",
              "delivered",
              "read",
              "failed"
            ]
          },
          "error": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "reason": {
                "type": "string",
                "description": "Why the channel refused the message, in plain words."
              }
            },
            "required": [
              "reason"
            ],
            "additionalProperties": false
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "messageId",
          "conversationId",
          "connection",
          "status",
          "error",
          "updatedAt"
        ],
        "additionalProperties": false
      },
      "Event_conversation_created": {
        "type": "object",
        "properties": {
          "conversation": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "description": "`open`, `snoozed`, `resolved`, …"
              },
              "connection": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "channel": {
                    "type": "string",
                    "enum": [
                      "whatsapp",
                      "instagram",
                      "messenger",
                      "email",
                      "discord",
                      "x",
                      "webchat",
                      "sms",
                      "voice"
                    ],
                    "description": "The channel family, e.g. `whatsapp`."
                  },
                  "kind": {
                    "type": "string",
                    "description": "The connection kind, e.g. `whatsapp_cloud` or `whatsapp_web`."
                  }
                },
                "required": [
                  "id",
                  "channel",
                  "kind"
                ],
                "additionalProperties": false
              },
              "contactId": {
                "type": "string",
                "format": "uuid"
              },
              "assigneeId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "The member who owns the conversation, or null when it is unassigned."
              },
              "teamId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "topicId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "app": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "The Gauge App (support project) this conversation belongs to, when it belongs to one."
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "status",
              "connection",
              "contactId",
              "assigneeId",
              "teamId",
              "topicId",
              "app",
              "createdAt"
            ],
            "additionalProperties": false
          },
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "identities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "The channel kind the handle belongs to."
                    },
                    "externalId": {
                      "type": "string",
                      "description": "The handle on that channel: a phone number, an email address, a visitor id."
                    }
                  },
                  "required": [
                    "channel",
                    "externalId"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "id",
              "name",
              "identities"
            ],
            "additionalProperties": false
          },
          "initiatedBy": {
            "type": "string",
            "enum": [
              "contact",
              "business"
            ],
            "description": "`contact` when the first message was inbound."
          }
        },
        "required": [
          "conversation",
          "contact",
          "initiatedBy"
        ],
        "additionalProperties": false
      },
      "Event_conversation_updated": {
        "type": "object",
        "properties": {
          "conversation": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "description": "`open`, `snoozed`, `resolved`, …"
              },
              "connection": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "channel": {
                    "type": "string",
                    "enum": [
                      "whatsapp",
                      "instagram",
                      "messenger",
                      "email",
                      "discord",
                      "x",
                      "webchat",
                      "sms",
                      "voice"
                    ],
                    "description": "The channel family, e.g. `whatsapp`."
                  },
                  "kind": {
                    "type": "string",
                    "description": "The connection kind, e.g. `whatsapp_cloud` or `whatsapp_web`."
                  }
                },
                "required": [
                  "id",
                  "channel",
                  "kind"
                ],
                "additionalProperties": false
              },
              "contactId": {
                "type": "string",
                "format": "uuid"
              },
              "assigneeId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "The member who owns the conversation, or null when it is unassigned."
              },
              "teamId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "topicId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid"
              },
              "app": {
                "type": [
                  "object",
                  "null"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "name"
                ],
                "additionalProperties": false,
                "description": "The Gauge App (support project) this conversation belongs to, when it belongs to one."
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "status",
              "connection",
              "contactId",
              "assigneeId",
              "teamId",
              "topicId",
              "app",
              "createdAt"
            ],
            "additionalProperties": false
          },
          "changes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "status",
                "assignment"
              ]
            },
            "minItems": 1,
            "description": "`status` (opened, snoozed, resolved) or `assignment` (assignee, team or topic). The snapshot is the state after the change."
          }
        },
        "required": [
          "conversation",
          "changes"
        ],
        "additionalProperties": false
      },
      "Event_contact_created": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "identities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "The channel kind the handle belongs to."
                    },
                    "externalId": {
                      "type": "string",
                      "description": "The handle on that channel: a phone number, an email address, a visitor id."
                    }
                  },
                  "required": [
                    "channel",
                    "externalId"
                  ],
                  "additionalProperties": false
                }
              },
              "mergedIntoId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Set when this contact was merged into another."
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "name",
              "identities",
              "mergedIntoId",
              "createdAt"
            ],
            "additionalProperties": false
          },
          "origin": {
            "type": "string",
            "enum": [
              "inbound",
              "manual"
            ],
            "description": "`inbound` when a first message from a new person created the contact."
          }
        },
        "required": [
          "contact",
          "origin"
        ],
        "additionalProperties": false
      },
      "Event_contact_updated": {
        "type": "object",
        "properties": {
          "contact": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "identities": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "channel": {
                      "type": "string",
                      "description": "The channel kind the handle belongs to."
                    },
                    "externalId": {
                      "type": "string",
                      "description": "The handle on that channel: a phone number, an email address, a visitor id."
                    }
                  },
                  "required": [
                    "channel",
                    "externalId"
                  ],
                  "additionalProperties": false
                }
              },
              "mergedIntoId": {
                "type": [
                  "string",
                  "null"
                ],
                "format": "uuid",
                "description": "Set when this contact was merged into another."
              },
              "createdAt": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "name",
              "identities",
              "mergedIntoId",
              "createdAt"
            ],
            "additionalProperties": false
          },
          "change": {
            "type": "string",
            "enum": [
              "merged",
              "merge_undone",
              "identity_added",
              "identity_removed",
              "renamed",
              "fields_changed"
            ]
          }
        },
        "required": [
          "contact",
          "change"
        ],
        "additionalProperties": false
      },
      "Event_support_callback_cancelled": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "callbackId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "callbackId",
          "projectId",
          "customerId",
          "ticketId"
        ],
        "additionalProperties": false
      },
      "Event_support_callback_completed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "callbackId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "callbackId",
          "projectId",
          "customerId",
          "ticketId"
        ],
        "additionalProperties": false
      },
      "Event_support_callback_failed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "callbackId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "callbackId",
          "projectId",
          "customerId",
          "ticketId"
        ],
        "additionalProperties": false
      },
      "Event_support_callback_requested": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "callbackId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "callbackId",
          "projectId",
          "customerId",
          "ticketId"
        ],
        "additionalProperties": false
      },
      "Event_support_callback_scheduled": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "callbackId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "callbackId",
          "projectId",
          "customerId",
          "ticketId"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_answered": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "answeredByMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "firstResponseSecs": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "answeredByMemberId",
          "firstResponseSecs"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_ended": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "reason": {
            "type": "string",
            "enum": [
              "customer_left",
              "agent_closed",
              "timeout",
              "escalated",
              "offline_capture",
              "grant_revoked",
              "customer_ended"
            ]
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "reason"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_handoff_to_ticket": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "ticketNumber": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "ticketId",
          "ticketNumber"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_message_created": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "messageId": {
            "type": "string",
            "format": "uuid"
          },
          "authorType": {
            "type": "string",
            "enum": [
              "member",
              "ai",
              "system",
              "customer"
            ]
          },
          "customerId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "externalRef": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "messageId",
          "authorType",
          "customerId",
          "externalRef"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_offered": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "memberId": {
            "type": "string",
            "format": "uuid"
          },
          "expiresInSecs": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "memberId",
          "expiresInSecs"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_ownership_changed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "ownerKind": {
            "type": "string",
            "enum": [
              "none",
              "ai",
              "member"
            ]
          },
          "ownerMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "ownerProfileId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "reason": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 120
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "ownerKind",
          "ownerMemberId",
          "ownerProfileId",
          "reason"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_queued": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "position": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "position"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_session_started": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "identityMode": {
            "type": "string",
            "enum": [
              "anonymous",
              "hmac_verified",
              "authenticated"
            ]
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "identityMode"
        ],
        "additionalProperties": false
      },
      "Event_support_chat_unclaimed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "conversationId": {
            "type": "string",
            "format": "uuid"
          },
          "declinedCount": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "version",
          "sessionId",
          "projectId",
          "conversationId",
          "declinedCount"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_access_granted": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_access_revoked": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_blocked": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_created": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_deactivated": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_unblocked": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_unread_changed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "externalRef": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 200
          },
          "cause": {
            "type": "string",
            "enum": [
              "read",
              "team_message"
            ]
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "ticketsUnread": {
            "type": "integer",
            "minimum": 0
          },
          "chatsUnread": {
            "type": "integer",
            "minimum": 0
          },
          "tickets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "ticketId": {
                  "type": "string",
                  "format": "uuid"
                },
                "unread": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                }
              },
              "required": [
                "ticketId",
                "unread"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          },
          "chats": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "chatId": {
                  "type": "string",
                  "format": "uuid"
                },
                "unread": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                }
              },
              "required": [
                "chatId",
                "unread"
              ],
              "additionalProperties": false
            },
            "maxItems": 100
          }
        },
        "required": [
          "version",
          "projectId",
          "customerId",
          "externalRef",
          "cause",
          "total",
          "ticketsUnread",
          "chatsUnread",
          "tickets",
          "chats"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_updated": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "name",
                "locale",
                "email",
                "metadata"
              ]
            },
            "minItems": 1,
            "maxItems": 4
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId",
          "fields"
        ],
        "additionalProperties": false
      },
      "Event_support_customer_verified": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "customerId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_kb_article_published": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "articleId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "locale": {
            "type": "string",
            "enum": [
              "en",
              "ar"
            ]
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "internal"
            ]
          }
        },
        "required": [
          "version",
          "articleId",
          "projectId",
          "locale",
          "visibility"
        ],
        "additionalProperties": false
      },
      "Event_support_kb_article_unpublished": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "articleId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "reason": {
            "type": "string",
            "enum": [
              "unpublished",
              "archived"
            ]
          }
        },
        "required": [
          "version",
          "articleId",
          "projectId",
          "reason"
        ],
        "additionalProperties": false
      },
      "Event_support_kb_deflected": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "surface": {
            "type": "string",
            "enum": [
              "ticket_form",
              "widget"
            ]
          },
          "articleIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 3
          }
        },
        "required": [
          "version",
          "projectId",
          "surface",
          "articleIds"
        ],
        "additionalProperties": false
      },
      "Event_support_meeting_cancelled": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "meetingId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "meetingId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_meeting_created": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "meetingId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "video",
              "voice"
            ]
          },
          "bound": {
            "type": "boolean"
          }
        },
        "required": [
          "version",
          "meetingId",
          "projectId",
          "kind",
          "bound"
        ],
        "additionalProperties": false
      },
      "Event_support_meeting_ended": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "meetingId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "meetingId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_meeting_participant_joined": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "meetingId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "participant": {
            "type": "string",
            "enum": [
              "member",
              "customer"
            ]
          },
          "memberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "customerId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "meetingId",
          "projectId",
          "participant",
          "memberId",
          "customerId"
        ],
        "additionalProperties": false
      },
      "Event_support_meeting_started": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "meetingId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "meetingId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_project_branding_updated": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 32
            },
            "maxItems": 8
          }
        },
        "required": [
          "version",
          "projectId",
          "fields"
        ],
        "additionalProperties": false
      },
      "Event_support_project_created": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 32
          }
        },
        "required": [
          "version",
          "projectId",
          "key"
        ],
        "additionalProperties": false
      },
      "Event_support_project_updated": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "paused",
              "archived"
            ]
          }
        },
        "required": [
          "version",
          "projectId",
          "status"
        ],
        "additionalProperties": false
      },
      "Event_support_session_link_created": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionLinkId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "identity": {
            "type": "string",
            "enum": [
              "bound",
              "captured"
            ]
          },
          "use": {
            "type": "string",
            "enum": [
              "single",
              "multi"
            ]
          }
        },
        "required": [
          "version",
          "sessionLinkId",
          "projectId",
          "identity",
          "use"
        ],
        "additionalProperties": false
      },
      "Event_support_session_link_redeemed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionLinkId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "format": "uuid"
          },
          "redeemedCount": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "version",
          "sessionLinkId",
          "projectId",
          "customerId",
          "redeemedCount"
        ],
        "additionalProperties": false
      },
      "Event_support_session_link_revoked": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "sessionLinkId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "sessionLinkId",
          "projectId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_assigned": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "assigneeId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "byMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "assigneeId",
          "byMemberId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_created": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "new",
              "open",
              "pending",
              "on_hold",
              "solved",
              "closed"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "normal",
              "high",
              "urgent"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "portal",
              "chat",
              "email",
              "voice",
              "api",
              "agent"
            ]
          },
          "requesterCustomerId": {
            "type": "string",
            "format": "uuid"
          },
          "assigneeId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "number",
          "status",
          "priority",
          "source",
          "requesterCustomerId",
          "assigneeId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_escalated": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "escalationId": {
            "type": "string",
            "format": "uuid"
          },
          "slaKind": {
            "type": "string",
            "enum": [
              "first_response",
              "resolution"
            ]
          },
          "level": {
            "type": "integer"
          },
          "repeatCount": {
            "type": "integer"
          },
          "memberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "escalationId",
          "slaKind",
          "level",
          "repeatCount",
          "memberId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_escalation_acknowledged": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "escalationId": {
            "type": "string",
            "format": "uuid"
          },
          "memberId": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "escalationId",
          "memberId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_merged": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "targetTicketId": {
            "type": "string",
            "format": "uuid"
          },
          "byMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "targetTicketId",
          "byMemberId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_replied": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "replyVisibility": {
            "type": "string",
            "enum": [
              "public",
              "internal"
            ]
          },
          "authorType": {
            "type": "string",
            "enum": [
              "customer",
              "member"
            ]
          },
          "requesterCustomerId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "externalRef": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "replyVisibility",
          "authorType"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_sla_breached": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "slaKind": {
            "type": "string",
            "enum": [
              "first_response",
              "resolution"
            ]
          },
          "dueAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "slaKind",
          "dueAt"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_split": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "childTicketId": {
            "type": "string",
            "format": "uuid"
          },
          "byMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "childTicketId",
          "byMemberId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_status_changed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "from": {
            "type": "string",
            "enum": [
              "new",
              "open",
              "pending",
              "on_hold",
              "solved",
              "closed"
            ]
          },
          "to": {
            "type": "string",
            "enum": [
              "new",
              "open",
              "pending",
              "on_hold",
              "solved",
              "closed"
            ]
          },
          "actorType": {
            "type": "string",
            "enum": [
              "customer",
              "member",
              "system",
              "automation"
            ]
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "from",
          "to",
          "actorType"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_tier_changed": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "fromLevel": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 3
          },
          "toLevel": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 3
          },
          "reason": {
            "type": "string",
            "enum": [
              "manual",
              "sla_breach",
              "tier_timer",
              "tiers_reconfigured"
            ]
          },
          "byMemberId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "fromLevel",
          "toLevel",
          "reason",
          "byMemberId"
        ],
        "additionalProperties": false
      },
      "Event_support_ticket_updated": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "ticketId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "changed": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            },
            "maxItems": 20
          }
        },
        "required": [
          "version",
          "ticketId",
          "projectId",
          "changed"
        ],
        "additionalProperties": false
      },
      "Event_support_voice_abandoned": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "workspaceId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "waitSecs": {
            "type": "integer",
            "minimum": 0
          },
          "overflowActionTaken": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "voicemail",
              "callback",
              "ticket",
              "hangup"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 300
          }
        },
        "required": [
          "version",
          "workspaceId",
          "projectId",
          "sessionId",
          "waitSecs",
          "overflowActionTaken"
        ],
        "additionalProperties": false
      },
      "Event_support_voice_answered": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "workspaceId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "memberId": {
            "type": "string",
            "format": "uuid"
          },
          "waitSecs": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "version",
          "workspaceId",
          "projectId",
          "sessionId",
          "memberId",
          "waitSecs"
        ],
        "additionalProperties": false
      },
      "Event_support_voice_ended": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "workspaceId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "billedSecs": {
            "type": "integer",
            "minimum": 0
          },
          "charged": {
            "type": "boolean"
          }
        },
        "required": [
          "version",
          "workspaceId",
          "projectId",
          "sessionId",
          "billedSecs",
          "charged"
        ],
        "additionalProperties": false
      },
      "Event_support_voice_queued": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "minimum": 0
          },
          "workspaceId": {
            "type": "string",
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "sessionId": {
            "type": "string",
            "format": "uuid"
          },
          "queueId": {
            "type": "string",
            "format": "uuid"
          },
          "position": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "version",
          "workspaceId",
          "projectId",
          "sessionId",
          "queueId",
          "position"
        ],
        "additionalProperties": false
      }
    },
    "parameters": {
      "GaugeSignature": {
        "name": "Gauge-Signature",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "`t=<epoch ms>,v1=<hex>`: HMAC-SHA256 of `<t>.<raw body>` with the endpoint secret. Two `v1` during a secret rotation; accept either. Reject a `t` more than 5 minutes off."
      },
      "GaugeEventId": {
        "name": "Gauge-Event-Id",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "The event id; the same on every retry and redelivery. Dedupe on it."
      },
      "GaugeEventType": {
        "name": "Gauge-Event-Type",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "The event type."
      },
      "GaugeDeliveryAttempt": {
        "name": "Gauge-Delivery-Attempt",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "1 on the first try, then 2, 3, …"
      },
      "GaugeWebhookId": {
        "name": "Gauge-Webhook-Id",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "The endpoint id."
      },
      "LegacySignature": {
        "name": "x-pulse-signature",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "Legacy: `sha256=<hex>` (the same HMAC). Still sent; prefer `Gauge-Signature`."
      },
      "LegacyTimestamp": {
        "name": "x-pulse-timestamp",
        "in": "header",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "Legacy: the epoch-ms `t`."
      }
    }
  },
  "paths": {
    "/v2/me": {
      "get": {
        "operationId": "getMe",
        "tags": [
          "Account"
        ],
        "summary": "Who this key is",
        "description": "The key, the member it acts as, the workspace and plan, its scopes, environment and the rate-limit budget left. Any valid key may call it.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The key and its context.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Me"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/connections": {
      "get": {
        "operationId": "listConnections",
        "tags": [
          "Connections"
        ],
        "summary": "List connections",
        "description": "Connected channels, newest first, each with what it can send over the API right now (this workspace’s rollout flags resolved). WhatsApp Web connections carry a `warning` about account bans.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "connections:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25,
              "description": "Page size, 1–100."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page. Opaque."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Opaque. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of connections.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectionPage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/connections/{id}": {
      "get": {
        "operationId": "getConnection",
        "tags": [
          "Connections"
        ],
        "summary": "Get a connection",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "connections:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The connection id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The connection.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Connection"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts": {
      "get": {
        "operationId": "listContacts",
        "tags": [
          "Contacts"
        ],
        "summary": "List contacts",
        "description": "The workspace’s contacts (the same list the console shows), filtered and sorted.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Page size, 1–100 (default 25)."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page. Opaque."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Opaque. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Name, email, phone or company contains (case-insensitive)."
            },
            "required": false,
            "name": "q",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Exact email."
            },
            "required": false,
            "name": "email",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Phone, any format (matched on digits)."
            },
            "required": false,
            "name": "phone",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Contacts with this tag."
            },
            "required": false,
            "name": "tag",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Company name contains."
            },
            "required": false,
            "name": "company",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "ISO-8601. Changed at or after."
            },
            "required": false,
            "name": "updatedSince",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "ISO-8601. Created at or after."
            },
            "required": false,
            "name": "createdSince",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "With `externalId`: the contact holding this channel identity. Alone: contacts with any identity on it."
            },
            "required": false,
            "name": "channel",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "The identity on `channel` (a phone, a WhatsApp id, an email…)."
            },
            "required": false,
            "name": "externalId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "createdAt",
                "-createdAt",
                "updatedAt",
                "-updatedAt"
              ],
              "description": "Default `-createdAt` (newest first)."
            },
            "required": false,
            "name": "sort",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of contacts.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactPage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Create a contact",
        "description": "At least a name, an email or a phone. An email another contact holds is a 409 naming the owner.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "displayName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "email": {
                    "type": "string",
                    "maxLength": 320,
                    "format": "email"
                  },
                  "phone": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 40
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "US",
                      "CA",
                      "GB"
                    ]
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "companyId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "companyName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "customFields": {
                    "type": "object",
                    "additionalProperties": {}
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    },
                    "maxItems": 50
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The contact.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/by-identity/{channel}/{externalId}": {
      "put": {
        "operationId": "upsertContactByIdentity",
        "tags": [
          "Contacts"
        ],
        "summary": "Create or update a contact by channel identity",
        "description": "Updates the contact holding `{channel}/{externalId}`, or creates one with that identity (201). Safe to repeat.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "A channel kind."
            },
            "required": true,
            "name": "channel",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "The handle on that channel."
            },
            "required": true,
            "name": "externalId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "displayName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "companyId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "companyName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "customFields": {
                    "type": "object",
                    "additionalProperties": {}
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "US",
                      "CA",
                      "GB"
                    ]
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The contact (201 when it was created).",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "201": {
            "description": "The contact (201 when it was created).",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`conflict`: the resource state refuses it (e.g. a handle another contact holds).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/{id}": {
      "get": {
        "operationId": "getContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Get a contact",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The contact.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Update a contact",
        "description": "`customFields` are validated against Settings → Customer fields (types, options, required).",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "displayName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "phone": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 40
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "US",
                      "CA",
                      "GB"
                    ]
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "companyId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "companyName": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "customFields": {
                    "type": "object",
                    "additionalProperties": {}
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The contact.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`conflict`: the resource state refuses it (e.g. a handle another contact holds).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "eraseContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Erase a contact (GDPR)",
        "description": "IRREVERSIBLE: erases the contact’s personal data, identities and message contents. Needs a key whose member may erase contacts (Owner or Admin). `?reason=` is recorded in the audit log.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "Why (kept in the audit log)."
            },
            "required": false,
            "name": "reason",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "What was erased.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactErasure"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`conflict`: the resource state refuses it (e.g. a handle another contact holds).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/{id}/identities": {
      "get": {
        "operationId": "listContactIdentities",
        "tags": [
          "Contacts"
        ],
        "summary": "List a contact’s identities",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Every channel handle on the contact.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactIdentityList"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "addContactIdentity",
        "tags": [
          "Contacts"
        ],
        "summary": "Add an identity",
        "description": "Phones are normalized to E.164 (send `country` for a national number). A handle another contact holds is a 409.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "channel": {
                    "type": "string",
                    "enum": [
                      "whatsapp_cloud",
                      "whatsapp_web",
                      "instagram",
                      "messenger",
                      "email",
                      "discord",
                      "x",
                      "webchat",
                      "voice",
                      "sms"
                    ]
                  },
                  "externalId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 320
                  },
                  "country": {
                    "type": "string",
                    "enum": [
                      "US",
                      "CA",
                      "GB"
                    ]
                  }
                },
                "required": [
                  "channel",
                  "externalId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The identity.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactIdentity"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/{id}/identities/{identityId}": {
      "delete": {
        "operationId": "removeContactIdentity",
        "tags": [
          "Contacts"
        ],
        "summary": "Remove an identity",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "identityId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The contact after the change.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/{id}/tags": {
      "post": {
        "operationId": "addContactTags",
        "tags": [
          "Contacts"
        ],
        "summary": "Tag a contact",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    },
                    "minItems": 1,
                    "maxItems": 50
                  }
                },
                "required": [
                  "tags"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The contact with its tags.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/{id}/tags/{tag}": {
      "delete": {
        "operationId": "removeContactTag",
        "tags": [
          "Contacts"
        ],
        "summary": "Untag a contact",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": true,
            "name": "tag",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The contact with its tags.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Contact"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/contacts/{id}/merge": {
      "post": {
        "operationId": "mergeContact",
        "tags": [
          "Contacts"
        ],
        "summary": "Merge a contact into this one",
        "description": "Folds `sourceId` into the path contact (identities, conversations, deals, notes, tags…). Undoable from the console for 7 days.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "contacts:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The surviving contact id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sourceId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "fieldChoices": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "enum": [
                        "survivor",
                        "other"
                      ]
                    }
                  }
                },
                "required": [
                  "sourceId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The merge and the surviving contact.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactMerge"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/conversations": {
      "get": {
        "operationId": "listConversations",
        "tags": [
          "Conversations"
        ],
        "summary": "List conversations",
        "description": "Only what this key’s member may see (their own / team scope, unassigned pull queue, collaborations).",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "conversations:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Page size, 1–100 (default 25)."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page. Opaque."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Opaque. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Comma-separated: open, snoozed, resolved."
            },
            "required": false,
            "name": "status",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Comma-separated channel kinds (whatsapp_cloud, whatsapp_web, email, webchat, …)."
            },
            "required": false,
            "name": "channel",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "One connection."
            },
            "required": false,
            "name": "connectionId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "`me`, `none` (unassigned) or a member id."
            },
            "required": false,
            "name": "assignee",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "The team handling it (Move to team, else its routing)."
            },
            "required": false,
            "name": "teamId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A topic."
            },
            "required": false,
            "name": "topicId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "An App."
            },
            "required": false,
            "name": "appId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "An App integration."
            },
            "required": false,
            "name": "integrationId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "One contact’s conversations."
            },
            "required": false,
            "name": "contactId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Tagged with this tag."
            },
            "required": false,
            "name": "tag",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "`true` / `false`: customer messages newer than this key’s member last read."
            },
            "required": false,
            "name": "unread",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "ISO-8601. Changed at or after."
            },
            "required": false,
            "name": "updatedSince",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Minimum priority score."
            },
            "required": false,
            "name": "priorityMin",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "Maximum priority score."
            },
            "required": false,
            "name": "priorityMax",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "createdAt",
                "-createdAt",
                "lastMessageAt",
                "-lastMessageAt"
              ],
              "description": "Default `-lastMessageAt`."
            },
            "required": false,
            "name": "sort",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of conversations.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversationPage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/conversations/{id}": {
      "get": {
        "operationId": "getConversation",
        "tags": [
          "Conversations"
        ],
        "summary": "Get a conversation",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "conversations:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The conversation id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The conversation.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Conversation"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateConversation",
        "tags": [
          "Conversations"
        ],
        "summary": "Update a conversation",
        "description": "Status (open / snoozed with `snoozedUntil`, or until the customer replies / resolved), assignee, Move to team, topic, tags, priority, and App visitor details (stored with source `api`). Applied in that order; a refusal stops the rest.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "conversations:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The conversation id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "open",
                      "snoozed",
                      "resolved"
                    ]
                  },
                  "snoozedUntil": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "assigneeId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  },
                  "teamId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "topicId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    },
                    "maxItems": 50
                  },
                  "addTags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    },
                    "minItems": 1,
                    "maxItems": 50
                  },
                  "removeTags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    },
                    "minItems": 1,
                    "maxItems": 50
                  },
                  "priority": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 1000
                  },
                  "visitorDetails": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "maxLength": 1000
                    }
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The conversation after the change.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Conversation"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`unsupported_channel_action`: the connection cannot do this (see `reason`, e.g. `outside_24h_window`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/conversations/{id}/read": {
      "post": {
        "operationId": "markConversationRead",
        "tags": [
          "Conversations"
        ],
        "summary": "Mark read",
        "description": "Moves this key’s member’s read marker to now.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "conversations:read"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The conversation id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The new read marker.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadMarker"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/conversations/{id}/notes": {
      "post": {
        "operationId": "createConversationNote",
        "tags": [
          "Conversations"
        ],
        "summary": "Add an internal note",
        "description": "Visible to the team only, never to the customer.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "conversations:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The conversation id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "body": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 8192
                  },
                  "messageId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "body"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The note.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Note"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/conversations/{id}/messages": {
      "get": {
        "operationId": "listConversationMessages",
        "tags": [
          "Conversations"
        ],
        "summary": "List a conversation’s messages",
        "description": "Newest first.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "messages:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The conversation id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "Page size, 1–100 (default 25)."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page. Opaque."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Opaque. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "inbound",
                "outbound"
              ]
            },
            "required": false,
            "name": "direction",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "`true` to interleave internal notes (type `note`). Default false."
            },
            "required": false,
            "name": "includeNotes",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "`true` to include system / internal rows. Default false."
            },
            "required": false,
            "name": "includeSystem",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of messages (and notes, when asked for).",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessagePage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/messages": {
      "post": {
        "operationId": "sendMessage",
        "tags": [
          "Messages"
        ],
        "summary": "Send a message",
        "description": "Text, an approved template, buttons / a list, or a file (`mediaId`) on a connection, to a thread, a contact or a new recipient. 201 when the channel sent it now; 202 with `status: queued` when it is dispatched in the background (watch `message.status_updated`). Outside WhatsApp’s 24-hour window only a template may be sent (422 `unsupported_channel_action`, reason `outside_24h_window`). On WhatsApp Cloud a template sent with `to` or `contactId` starts the conversation (contact and thread created or reused); free text to someone with no conversation is 422 `outside_24h_window`. A template must be approved, in the given language and given exactly its variables (422, reason `template_not_approved` / `template_language_not_found` / `template_variable_mismatch`). WhatsApp Web numbers have warm-up caps (429, reason `whatsapp_web_daily_cap` / `whatsapp_web_minute_cap`) and every response carries `warnings: [\"whatsapp_web_unofficial\"]`. The Idempotency-Key also de-duplicates the send itself, beyond the 24-hour replay window.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "messages:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "connectionId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "to": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 320
                  },
                  "contactId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "conversationId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "text": {
                    "type": "string",
                    "maxLength": 4096
                  },
                  "mediaId": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "template": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "language": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 12
                      },
                      "variables": {
                        "type": "object",
                        "additionalProperties": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 1024
                        },
                        "default": {}
                      }
                    },
                    "additionalProperties": false
                  },
                  "interactive": {
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "buttons"
                            ]
                          },
                          "body": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 1024
                          },
                          "header": {
                            "type": "string",
                            "maxLength": 60
                          },
                          "footer": {
                            "type": "string",
                            "maxLength": 60
                          },
                          "buttons": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "title": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 20
                                }
                              },
                              "required": [
                                "id",
                                "title"
                              ]
                            },
                            "minItems": 1,
                            "maxItems": 3
                          }
                        },
                        "required": [
                          "type",
                          "body",
                          "buttons"
                        ]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "list"
                            ]
                          },
                          "body": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 1024
                          },
                          "header": {
                            "type": "string",
                            "maxLength": 60
                          },
                          "footer": {
                            "type": "string",
                            "maxLength": 60
                          },
                          "button": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 20
                          },
                          "sections": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "title": {
                                  "type": "string",
                                  "maxLength": 24
                                },
                                "rows": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 200
                                      },
                                      "title": {
                                        "type": "string",
                                        "minLength": 1,
                                        "maxLength": 24
                                      },
                                      "description": {
                                        "type": "string",
                                        "maxLength": 72
                                      }
                                    },
                                    "required": [
                                      "id",
                                      "title"
                                    ]
                                  },
                                  "minItems": 1,
                                  "maxItems": 10
                                }
                              },
                              "required": [
                                "rows"
                              ]
                            },
                            "minItems": 1,
                            "maxItems": 10
                          }
                        },
                        "required": [
                          "type",
                          "body",
                          "button",
                          "sections"
                        ]
                      }
                    ]
                  },
                  "replyTo": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "maxLength": 500
                    }
                  }
                },
                "required": [
                  "connectionId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The message, its status and any warnings.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendMessageResult"
                }
              }
            }
          },
          "202": {
            "description": "The message, its status and any warnings. Accepted: dispatched in the background.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendMessageResult"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "`payload_too_large`: the file is over the limit (`details.maxBytes`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`unsupported_channel_action`: the connection cannot do this (see `reason`, e.g. `outside_24h_window`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/messages/{id}": {
      "get": {
        "operationId": "getMessage",
        "tags": [
          "Messages"
        ],
        "summary": "Get a message",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "messages:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The message id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The message.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Message"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/messages/{id}/attachments/{index}": {
      "get": {
        "operationId": "getMessageAttachment",
        "tags": [
          "Messages"
        ],
        "summary": "Download a message’s file",
        "description": "A signed download link (valid 5 minutes) for a file on a message — one a customer sent or one you sent. This is the path a webhook’s `media[].url` carries. A message carries one file today (`index` 0). 404 when there is none, or when Gauge holds no copy of it (reason `attachment_not_available`).",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "messages:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The message id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 0,
              "description": "The attachment’s position on the message (0)."
            },
            "required": true,
            "name": "index",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The file and its signed download link.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageAttachment"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`media_unavailable`: file storage has no public address on this deployment yet. Retry later; text sends are unaffected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/messages/{id}/status-history": {
      "get": {
        "operationId": "getMessageStatusHistory",
        "tags": [
          "Messages"
        ],
        "summary": "A message’s delivery history",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "messages:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The message id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Every status the message reached, oldest first.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageStatusHistory"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/media": {
      "post": {
        "operationId": "createMedia",
        "tags": [
          "Media"
        ],
        "summary": "Start a file upload",
        "description": "Declare the file; PUT its bytes to `upload.url` with exactly `upload.headers` within 15 minutes; then send it with `mediaId`. Pass `connectionId` to check the channel’s limits up front.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "media:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "contentType": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 127,
                    "pattern": "^[a-z0-9.+-]+\\/[a-z0-9.+-]+$"
                  },
                  "sizeBytes": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "filename": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "connectionId": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "contentType",
                  "sizeBytes"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The media and its presigned upload.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Media"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "`payload_too_large`: the file is over the limit (`details.maxBytes`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`unsupported_channel_action`: the connection cannot do this (see `reason`, e.g. `outside_24h_window`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`media_unavailable`: file storage has no public address on this deployment yet. Retry later; text sends are unaffected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/media/{id}": {
      "get": {
        "operationId": "getMedia",
        "tags": [
          "Media"
        ],
        "summary": "Get a file",
        "description": "Once uploaded, a signed download link valid for 5 minutes.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "media:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The media id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The media and its download link.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Media"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`media_unavailable`: file storage has no public address on this deployment yet. Retry later; text sends are unaffected.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates": {
      "get": {
        "operationId": "listTemplates",
        "tags": [
          "Templates"
        ],
        "summary": "List message templates",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "templates:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "Page size, 1–100 (default 25)."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page. Opaque."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Opaque. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "One connection."
            },
            "required": false,
            "name": "connectionId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "approved, pending, rejected, draft, paused, disabled."
            },
            "required": false,
            "name": "status",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "e.g. `en_US`."
            },
            "required": false,
            "name": "language",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "marketing, utility, authentication."
            },
            "required": false,
            "name": "category",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of templates.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplatePage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/templates/{id}": {
      "get": {
        "operationId": "getTemplate",
        "tags": [
          "Templates"
        ],
        "summary": "Get a template",
        "description": "With its components and the body variables a send must fill.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "templates:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The template id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The template.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Template"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhook-endpoints": {
      "get": {
        "operationId": "listWebhookEndpoints",
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhook endpoints",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Page size, 1–100."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of endpoints.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointPage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "createWebhookEndpoint",
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a webhook endpoint",
        "description": "Starts sending the chosen events to `url`. The response carries the signing `secret` ONCE. The endpoint receives only conversations the key’s member can see. Subscribing to message, conversation or contact events also needs `messages:read`, `conversations:read` or `contacts:read` on the key. For WhatsApp Web connections you are responsible for send volume and the ban risk. Deliveries are at-least-once: dedupe on the event `id` (also in `Gauge-Event-Id`). Order is NOT guaranteed, not even within one conversation — use `occurredAt` and the snapshot in the payload. A non-2xx answer is retried after 30 s, 5 min, 1 h and 6 h. An endpoint failing every delivery for 3 days is switched off and its owner is told.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "maxLength": 2048,
                    "format": "uri"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1
                  },
                  "connectionIds": {
                    "type": [
                      "array",
                      "null"
                    ],
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 50
                  },
                  "projectId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  },
                  "apiVersion": {
                    "type": "string",
                    "enum": [
                      "2026-10-21"
                    ]
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "url",
                  "events"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The endpoint, with its signing secret (shown once).",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointWithSecret"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhook-endpoints/{id}": {
      "get": {
        "operationId": "getWebhookEndpoint",
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a webhook endpoint",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The webhook endpoint id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpoint"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "updateWebhookEndpoint",
        "tags": [
          "Webhooks"
        ],
        "summary": "Update a webhook endpoint",
        "description": "Change the URL, events, connection or App filter, version, or turn it on or off. Turning it on clears an automatic switch-off.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The webhook endpoint id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "maxLength": 2048,
                    "format": "uri"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1
                    },
                    "minItems": 1
                  },
                  "connectionIds": {
                    "type": [
                      "array",
                      "null"
                    ],
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 50
                  },
                  "projectId": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "format": "uuid"
                  },
                  "apiVersion": {
                    "type": "string",
                    "enum": [
                      "2026-10-21"
                    ]
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated endpoint.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpoint"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteWebhookEndpoint",
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a webhook endpoint",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:write"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The webhook endpoint id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted, with its delivery log.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Deleted"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhook-endpoints/{id}/rotate-secret": {
      "post": {
        "operationId": "rotateWebhookSecret",
        "tags": [
          "Webhooks"
        ],
        "summary": "Rotate the signing secret",
        "description": "Returns the new secret ONCE. With `overlapHours: 24` the old secret keeps signing a second `v1` in `Gauge-Signature` for a day.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The webhook endpoint id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "overlapHours": {
                    "anyOf": [
                      {
                        "type": "number",
                        "enum": [
                          0
                        ]
                      },
                      {
                        "type": "number",
                        "enum": [
                          24
                        ]
                      }
                    ],
                    "default": 24,
                    "description": "How long the old secret keeps signing (a second `v1`)."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The new secret.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookSecret"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhook-endpoints/{id}/test": {
      "post": {
        "operationId": "testWebhookEndpoint",
        "tags": [
          "Webhooks"
        ],
        "summary": "Send a test event",
        "description": "Signs and sends a sample of a catalogue event (`test: true`, `livemode: false`) now, and reports what the endpoint answered.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The webhook endpoint id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128,
                    "default": "webhook.test",
                    "description": "A catalogue event to send a sample of, or `webhook.test`."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The outcome.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookTestResult"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/webhook-endpoints/{id}/deliveries": {
      "get": {
        "operationId": "listWebhookDeliveries",
        "tags": [
          "Webhooks"
        ],
        "summary": "List deliveries",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "The webhook endpoint id."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Page size, 1–100."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of deliveries, newest first.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDeliveryPage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/events": {
      "get": {
        "operationId": "listEvents",
        "tags": [
          "Events"
        ],
        "summary": "List events",
        "description": "The last 30 days. Message and conversation events are listed only for conversations the key’s member can see, and only when the key may read conversations.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "events:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "description": "Page size, 1–100."
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `nextCursor` from the previous page."
            },
            "required": false,
            "name": "after",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A `prevCursor`, to page back. Not with `after`."
            },
            "required": false,
            "name": "before",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "An exact event type, or a `family.*` prefix."
            },
            "required": false,
            "name": "type",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "date-time",
              "description": "Only events at or after this instant."
            },
            "required": false,
            "name": "since",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Only events about this conversation."
            },
            "required": false,
            "name": "conversationId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of events, newest first.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventPage"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/events/{id}": {
      "get": {
        "operationId": "getEvent",
        "tags": [
          "Events"
        ],
        "summary": "Get an event",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "events:read"
        ],
        "x-idempotent": false,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "The event id (`evt_…`, or digits for a support event)."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "The event and the exact body delivered.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/events/{id}/redeliver": {
      "post": {
        "operationId": "redeliverEvent",
        "tags": [
          "Events"
        ],
        "summary": "Redeliver an event",
        "description": "Sends the same body again (same `id`) to the endpoints that received it, or to one. Shares the workspace’s replay budget (20 an hour) with the console.",
        "security": [
          {
            "ApiKey": []
          }
        ],
        "x-scopes": [
          "webhooks:write"
        ],
        "x-idempotent": true,
        "parameters": [
          {
            "schema": {
              "type": "string",
              "description": "The event id (`evt_…`, or digits for a support event)."
            },
            "required": true,
            "name": "id",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "A dated version. Default 2026-10-21."
            },
            "required": false,
            "name": "Gauge-Version",
            "in": "header"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "description": "Required on every POST. Retries with the same key replay the first response for 24 h."
            },
            "required": true,
            "name": "Idempotency-Key",
            "in": "header"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "endpointId": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Redeliver to this endpoint only. Default: every endpoint that received it."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The new deliveries.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Gauge-Version": {
                "$ref": "#/components/headers/Gauge-Version"
              },
              "RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimit-Limit"
              },
              "RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimit-Remaining"
              },
              "RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedeliverResult"
                }
              }
            }
          },
          "400": {
            "description": "The request is invalid; `details` lists each field path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing, invalid, revoked or expired key (`unauthorized`), or its member left (`key_owner_inactive`).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "The API is available on the Growth and Scale plans.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`insufficient_scope`, `workspace_suspended`, or `forbidden` (IP allowlist, test key, pinned App).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Not found (or not visible to this key).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "`idempotency_mismatch` (key reused with another body), `conflict` (still in flight, or the resource state refuses it).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit reached. Wait `Retry-After` seconds.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Quote the request id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {
    "message.received": {
      "post": {
        "operationId": "webhook_message_received",
        "tags": [
          "Webhooks"
        ],
        "summary": "message.received",
        "description": "A customer sent a message on any channel: text, files, and the button or list row they tapped. Sent only for conversations the endpoint owner can see, on the endpoint’s connections. Endpoints on API version 2026-10-21 or later.",
        "x-group": "messages",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "message.received"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_message_received"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "message.sent": {
      "post": {
        "operationId": "webhook_message_sent",
        "tags": [
          "Webhooks"
        ],
        "summary": "message.sent",
        "description": "A message was sent to a customer, by a person, Gauge AI, an automation or the API. Sent only for conversations the endpoint owner can see, on the endpoint’s connections. Endpoints on API version 2026-10-21 or later.",
        "x-group": "messages",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "message.sent"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_message_sent"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "message.status_updated": {
      "post": {
        "operationId": "webhook_message_status_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "message.status_updated",
        "description": "An outgoing message was delivered, read, or failed (with the reason). Sent only for conversations the endpoint owner can see, on the endpoint’s connections. Endpoints on API version 2026-10-21 or later.",
        "x-group": "messages",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "message.status_updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_message_status_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "conversation.created": {
      "post": {
        "operationId": "webhook_conversation_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "conversation.created",
        "description": "A new conversation started. Sent only for conversations the endpoint owner can see, on the endpoint’s connections. Endpoints on API version 2026-10-21 or later.",
        "x-group": "conversations",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "conversation.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_conversation_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "conversation.updated": {
      "post": {
        "operationId": "webhook_conversation_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "conversation.updated",
        "description": "A conversation was opened, snoozed or resolved, or its assignee, team or topic changed. Sent only for conversations the endpoint owner can see, on the endpoint’s connections. Endpoints on API version 2026-10-21 or later.",
        "x-group": "conversations",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "conversation.updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_conversation_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "contact.created": {
      "post": {
        "operationId": "webhook_contact_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "contact.created",
        "description": "A contact was created, by a person or by a first message from someone new. Endpoints on API version 2026-10-21 or later.",
        "x-group": "contacts",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "contact.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_contact_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "contact.updated": {
      "post": {
        "operationId": "webhook_contact_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "contact.updated",
        "description": "A contact was renamed, merged, had a handle added or removed, or had fields changed. Endpoints on API version 2026-10-21 or later.",
        "x-group": "contacts",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "contact.updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_contact_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.callback.cancelled": {
      "post": {
        "operationId": "webhook_support_callback_cancelled",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.callback.cancelled",
        "description": "Support callback: cancelled. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.callback.cancelled"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_callback_cancelled"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.callback.completed": {
      "post": {
        "operationId": "webhook_support_callback_completed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.callback.completed",
        "description": "Support callback: completed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.callback.completed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_callback_completed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.callback.failed": {
      "post": {
        "operationId": "webhook_support_callback_failed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.callback.failed",
        "description": "Support callback: failed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.callback.failed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_callback_failed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.callback.requested": {
      "post": {
        "operationId": "webhook_support_callback_requested",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.callback.requested",
        "description": "Support callback: requested. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.callback.requested"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_callback_requested"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.callback.scheduled": {
      "post": {
        "operationId": "webhook_support_callback_scheduled",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.callback.scheduled",
        "description": "Support callback: scheduled. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.callback.scheduled"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_callback_scheduled"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.answered": {
      "post": {
        "operationId": "webhook_support_chat_answered",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.answered",
        "description": "Support chat: answered. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.answered"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_answered"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.ended": {
      "post": {
        "operationId": "webhook_support_chat_ended",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.ended",
        "description": "Support chat: ended. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.ended"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_ended"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.handoff_to_ticket": {
      "post": {
        "operationId": "webhook_support_chat_handoff_to_ticket",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.handoff_to_ticket",
        "description": "Support chat: handoff to ticket. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.handoff_to_ticket"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_handoff_to_ticket"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.message_created": {
      "post": {
        "operationId": "webhook_support_chat_message_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.message_created",
        "description": "Support chat: message created. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.message_created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_message_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.offered": {
      "post": {
        "operationId": "webhook_support_chat_offered",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.offered",
        "description": "Support chat: offered. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.offered"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_offered"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.ownership_changed": {
      "post": {
        "operationId": "webhook_support_chat_ownership_changed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.ownership_changed",
        "description": "Support chat: ownership changed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.ownership_changed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_ownership_changed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.queued": {
      "post": {
        "operationId": "webhook_support_chat_queued",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.queued",
        "description": "Support chat: queued. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.queued"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_queued"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.session_started": {
      "post": {
        "operationId": "webhook_support_chat_session_started",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.session_started",
        "description": "Support chat: session started. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.session_started"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_session_started"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.chat.unclaimed": {
      "post": {
        "operationId": "webhook_support_chat_unclaimed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.chat.unclaimed",
        "description": "Support chat: unclaimed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.chat.unclaimed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_chat_unclaimed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.access_granted": {
      "post": {
        "operationId": "webhook_support_customer_access_granted",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.access_granted",
        "description": "Support customer: access granted. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.access_granted"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_access_granted"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.access_revoked": {
      "post": {
        "operationId": "webhook_support_customer_access_revoked",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.access_revoked",
        "description": "Support customer: access revoked. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.access_revoked"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_access_revoked"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.blocked": {
      "post": {
        "operationId": "webhook_support_customer_blocked",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.blocked",
        "description": "Support customer: blocked. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.blocked"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_blocked"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.created": {
      "post": {
        "operationId": "webhook_support_customer_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.created",
        "description": "Support customer: created. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.deactivated": {
      "post": {
        "operationId": "webhook_support_customer_deactivated",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.deactivated",
        "description": "Support customer: deactivated. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.deactivated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_deactivated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.unblocked": {
      "post": {
        "operationId": "webhook_support_customer_unblocked",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.unblocked",
        "description": "Support customer: unblocked. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.unblocked"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_unblocked"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.unread_changed": {
      "post": {
        "operationId": "webhook_support_customer_unread_changed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.unread_changed",
        "description": "Support customer: unread changed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.unread_changed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_unread_changed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.updated": {
      "post": {
        "operationId": "webhook_support_customer_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.updated",
        "description": "Support customer: updated. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.customer.verified": {
      "post": {
        "operationId": "webhook_support_customer_verified",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.customer.verified",
        "description": "Support customer: verified. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.customer.verified"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_customer_verified"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.kb.article_published": {
      "post": {
        "operationId": "webhook_support_kb_article_published",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.kb.article_published",
        "description": "Support kb: article published. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.kb.article_published"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_kb_article_published"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.kb.article_unpublished": {
      "post": {
        "operationId": "webhook_support_kb_article_unpublished",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.kb.article_unpublished",
        "description": "Support kb: article unpublished. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.kb.article_unpublished"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_kb_article_unpublished"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.kb.deflected": {
      "post": {
        "operationId": "webhook_support_kb_deflected",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.kb.deflected",
        "description": "Support kb: deflected. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.kb.deflected"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_kb_deflected"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.meeting.cancelled": {
      "post": {
        "operationId": "webhook_support_meeting_cancelled",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.meeting.cancelled",
        "description": "Support meeting: cancelled. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.meeting.cancelled"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_meeting_cancelled"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.meeting.created": {
      "post": {
        "operationId": "webhook_support_meeting_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.meeting.created",
        "description": "Support meeting: created. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.meeting.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_meeting_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.meeting.ended": {
      "post": {
        "operationId": "webhook_support_meeting_ended",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.meeting.ended",
        "description": "Support meeting: ended. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.meeting.ended"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_meeting_ended"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.meeting.participant_joined": {
      "post": {
        "operationId": "webhook_support_meeting_participant_joined",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.meeting.participant_joined",
        "description": "Support meeting: participant joined. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.meeting.participant_joined"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_meeting_participant_joined"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.meeting.started": {
      "post": {
        "operationId": "webhook_support_meeting_started",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.meeting.started",
        "description": "Support meeting: started. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.meeting.started"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_meeting_started"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.project.branding_updated": {
      "post": {
        "operationId": "webhook_support_project_branding_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.project.branding_updated",
        "description": "Support project: branding updated. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.project.branding_updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_project_branding_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.project.created": {
      "post": {
        "operationId": "webhook_support_project_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.project.created",
        "description": "Support project: created. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.project.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_project_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.project.updated": {
      "post": {
        "operationId": "webhook_support_project_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.project.updated",
        "description": "Support project: updated. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.project.updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_project_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.session_link.created": {
      "post": {
        "operationId": "webhook_support_session_link_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.session_link.created",
        "description": "Support session link: created. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.session_link.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_session_link_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.session_link.redeemed": {
      "post": {
        "operationId": "webhook_support_session_link_redeemed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.session_link.redeemed",
        "description": "Support session link: redeemed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.session_link.redeemed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_session_link_redeemed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.session_link.revoked": {
      "post": {
        "operationId": "webhook_support_session_link_revoked",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.session_link.revoked",
        "description": "Support session link: revoked. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.session_link.revoked"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_session_link_revoked"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.assigned": {
      "post": {
        "operationId": "webhook_support_ticket_assigned",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.assigned",
        "description": "Support ticket: assigned. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.assigned"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_assigned"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.created": {
      "post": {
        "operationId": "webhook_support_ticket_created",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.created",
        "description": "Support ticket: created. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.created"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_created"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.escalated": {
      "post": {
        "operationId": "webhook_support_ticket_escalated",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.escalated",
        "description": "Support ticket: escalated. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.escalated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_escalated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.escalation_acknowledged": {
      "post": {
        "operationId": "webhook_support_ticket_escalation_acknowledged",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.escalation_acknowledged",
        "description": "Support ticket: escalation acknowledged. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.escalation_acknowledged"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_escalation_acknowledged"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.merged": {
      "post": {
        "operationId": "webhook_support_ticket_merged",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.merged",
        "description": "Support ticket: merged. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.merged"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_merged"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.replied": {
      "post": {
        "operationId": "webhook_support_ticket_replied",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.replied",
        "description": "Support ticket: replied. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.replied"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_replied"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.sla_breached": {
      "post": {
        "operationId": "webhook_support_ticket_sla_breached",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.sla_breached",
        "description": "Support ticket: sla breached. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.sla_breached"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_sla_breached"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.split": {
      "post": {
        "operationId": "webhook_support_ticket_split",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.split",
        "description": "Support ticket: split. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.split"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_split"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.status_changed": {
      "post": {
        "operationId": "webhook_support_ticket_status_changed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.status_changed",
        "description": "Support ticket: status changed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.status_changed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_status_changed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.tier_changed": {
      "post": {
        "operationId": "webhook_support_ticket_tier_changed",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.tier_changed",
        "description": "Support ticket: tier changed. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.tier_changed"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_tier_changed"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.ticket.updated": {
      "post": {
        "operationId": "webhook_support_ticket_updated",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.ticket.updated",
        "description": "Support ticket: updated. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.ticket.updated"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_ticket_updated"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.voice.abandoned": {
      "post": {
        "operationId": "webhook_support_voice_abandoned",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.voice.abandoned",
        "description": "Support voice: abandoned. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.voice.abandoned"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_voice_abandoned"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.voice.answered": {
      "post": {
        "operationId": "webhook_support_voice_answered",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.voice.answered",
        "description": "Support voice: answered. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.voice.answered"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_voice_answered"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.voice.ended": {
      "post": {
        "operationId": "webhook_support_voice_ended",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.voice.ended",
        "description": "Support voice: ended. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.voice.ended"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_voice_ended"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    },
    "support.voice.queued": {
      "post": {
        "operationId": "webhook_support_voice_queued",
        "tags": [
          "Webhooks"
        ],
        "summary": "support.voice.queued",
        "description": "Support voice: queued. Every endpoint, including those created before API v2.",
        "x-group": "support",
        "parameters": [
          {
            "$ref": "#/components/parameters/GaugeSignature"
          },
          {
            "$ref": "#/components/parameters/GaugeEventId"
          },
          {
            "$ref": "#/components/parameters/GaugeEventType"
          },
          {
            "$ref": "#/components/parameters/GaugeDeliveryAttempt"
          },
          {
            "$ref": "#/components/parameters/GaugeWebhookId"
          },
          {
            "$ref": "#/components/parameters/LegacySignature"
          },
          {
            "$ref": "#/components/parameters/LegacyTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookEnvelope"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "event": {
                        "type": "string",
                        "enum": [
                          "support.voice.queued"
                        ]
                      },
                      "payload": {
                        "$ref": "#/components/schemas/Event_support_voice_queued"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Received. Any other status is retried (30 s, 5 min, 1 h, 6 h)."
          }
        }
      }
    }
  }
}
