PostHog · Schema

PatchedTicket

Serializer mixin that handles tags for objects.

A/B TestingAnalyticsFeature FlagsOpen-SourceProduct AnalyticsSession Recording

Properties

Name Type Description
id string
ticket_number integer
channel_source object
channel_detail object
distinct_id string
status object Ticket status: new, open, pending, on_hold, or resolved * `new` - New * `open` - Open * `pending` - Pending * `on_hold` - On hold * `resolved` - Resolved
priority object Ticket priority: low, medium, or high. Null if unset. * `low` - Low * `medium` - Medium * `high` - High
assignee object
anonymous_traits object Customer-provided traits such as name and email
ai_resolved boolean
escalation_reason string
created_at string
updated_at string
message_count integer
last_message_at string
last_message_text string
unread_team_count integer
unread_customer_count integer
session_id string
session_context object
sla_due_at string SLA deadline set via workflows. Null means no SLA.
snoozed_until string
slack_channel_id string
slack_thread_ts string
slack_team_id string
email_subject string
email_from string
email_to string
cc_participants object
person object
tags array
View JSON Schema on GitHub

JSON Schema

posthog-patchedticket-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/PatchedTicket",
  "title": "PatchedTicket",
  "type": "object",
  "description": "Serializer mixin that handles tags for objects.",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "readOnly": true
    },
    "ticket_number": {
      "type": "integer",
      "readOnly": true
    },
    "channel_source": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ChannelSourceEnum"
        }
      ],
      "readOnly": true
    },
    "channel_detail": {
      "readOnly": true,
      "nullable": true,
      "oneOf": [
        {
          "$ref": "#/components/schemas/ChannelDetailEnum"
        },
        {
          "$ref": "#/components/schemas/NullEnum"
        }
      ]
    },
    "distinct_id": {
      "type": "string",
      "readOnly": true
    },
    "status": {
      "allOf": [
        {
          "$ref": "#/components/schemas/TicketStatusEnum"
        }
      ],
      "description": "Ticket status: new, open, pending, on_hold, or resolved\n\n* `new` - New\n* `open` - Open\n* `pending` - Pending\n* `on_hold` - On hold\n* `resolved` - Resolved"
    },
    "priority": {
      "nullable": true,
      "description": "Ticket priority: low, medium, or high. Null if unset.\n\n* `low` - Low\n* `medium` - Medium\n* `high` - High",
      "oneOf": [
        {
          "$ref": "#/components/schemas/PriorityEnum"
        },
        {
          "$ref": "#/components/schemas/BlankEnum"
        },
        {
          "$ref": "#/components/schemas/NullEnum"
        }
      ]
    },
    "assignee": {
      "allOf": [
        {
          "$ref": "#/components/schemas/TicketAssignment"
        }
      ],
      "readOnly": true
    },
    "anonymous_traits": {
      "description": "Customer-provided traits such as name and email"
    },
    "ai_resolved": {
      "type": "boolean"
    },
    "escalation_reason": {
      "type": "string",
      "nullable": true
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true
    },
    "message_count": {
      "type": "integer",
      "readOnly": true
    },
    "last_message_at": {
      "type": "string",
      "format": "date-time",
      "readOnly": true,
      "nullable": true
    },
    "last_message_text": {
      "type": "string",
      "readOnly": true,
      "nullable": true
    },
    "unread_team_count": {
      "type": "integer",
      "readOnly": true
    },
    "unread_customer_count": {
      "type": "integer",
      "readOnly": true
    },
    "session_id": {
      "type": "string",
      "readOnly": true,
      "nullable": true
    },
    "session_context": {
      "readOnly": true
    },
    "sla_due_at": {
      "type": "string",
      "format": "date-time",
      "nullable": true,
      "description": "SLA deadline set via workflows. Null means no SLA."
    },
    "snoozed_until": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "slack_channel_id": {
      "type": "string",
      "readOnly": true,
      "nullable": true
    },
    "slack_thread_ts": {
      "type": "string",
      "readOnly": true,
      "nullable": true
    },
    "slack_team_id": {
      "type": "string",
      "readOnly": true,
      "nullable": true
    },
    "email_subject": {
      "type": "string",
      "readOnly": true,
      "nullable": true
    },
    "email_from": {
      "type": "string",
      "format": "email",
      "readOnly": true,
      "nullable": true
    },
    "email_to": {
      "type": "string",
      "nullable": true,
      "readOnly": true
    },
    "cc_participants": {
      "readOnly": true
    },
    "person": {
      "allOf": [
        {
          "$ref": "#/components/schemas/TicketPerson"
        }
      ],
      "readOnly": true,
      "nullable": true
    },
    "tags": {
      "type": "array",
      "items": {}
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/posthog-patchedticket"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.