{ "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "SortDirection": { "enum": [ "asc", "desc" ], "type": "string" }, "ThreadListCwdFilter": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "ThreadSortKey": { "enum": [ "created_at", "updated_at", "recency_at", "section_position" ], "type": "string" }, "ThreadSourceKind": { "enum": [ "cli", "vscode", "exec", "appServer", "subAgent", "subAgentReview", "subAgentCompact", "subAgentThreadSpawn", "subAgentOther", "unknown" ], "type": "string" } }, "properties": { "archived": { "description": "Optional archived filter; when set to true, only archived threads are returned. If false or null, only non-archived threads are returned.", "type": [ "boolean", "null" ] }, "currentAccountOnly": { "description": "Show local history visible to the current ChatGPT account. Defaults to false.", "type": "boolean" }, "cursor": { "description": "Opaque pagination cursor returned by a previous call.", "type": [ "string", "null" ] }, "cwd": { "anyOf": [ { "$ref": "#/definitions/ThreadListCwdFilter" }, { "type": "null" } ], "description": "Optional cwd filter or filters; when set, only threads whose session cwd exactly matches one of these paths are returned." }, "excludedThreadIds": { "description": "Thread IDs to exclude before applying the result limit. Up to 100 entries; invalid IDs or a larger list are rejected, never truncated. Send the same exclusions on each page. Omitted, null, or empty means no exclusions.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "includedThreadIds": { "description": "Restrict results to up to 100 thread IDs before pagination. Omit or send null for unrestricted results. An empty list matches nothing. Exclusions still apply. Repeat the same IDs on each page. The local store uses indexed metadata for this filter.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "limit": { "description": "Optional page size; defaults to a reasonable server-side value.", "format": "uint32", "minimum": 0.0, "type": [ "integer", "null" ] }, "modelProviders": { "description": "Optional provider filter; when set, only sessions recorded under these providers are returned. When present but empty, includes all providers.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "originators": { "description": "Optional originator allowlist, matching any supplied value exactly. Supported by hosted backends only; the local app-server rejects a nonempty list. Omitted or empty lists leave originators unrestricted.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "searchTerm": { "description": "Optional substring filter for the extracted thread title.", "type": [ "string", "null" ] }, "sectionId": { "description": "Omit to include every section, set to `null` for unsectioned threads, or provide a section ID to return only threads in that section.", "type": [ "string", "null" ] }, "sortDirection": { "anyOf": [ { "$ref": "#/definitions/SortDirection" }, { "type": "null" } ], "description": "Optional sort direction; defaults to descending (newest first)." }, "sortKey": { "anyOf": [ { "$ref": "#/definitions/ThreadSortKey" }, { "type": "null" } ], "description": "Optional sort key; defaults to created_at." }, "sourceKinds": { "description": "Optional source filter; when set, only sessions from these source kinds are returned. When omitted or empty, defaults to interactive sources.", "items": { "$ref": "#/definitions/ThreadSourceKind" }, "type": [ "array", "null" ] }, "useStateDbOnly": { "description": "If true, the local store returns indexed metadata without scanning JSONL rollouts for repairs. Requests with `includedThreadIds` always use indexed metadata.", "type": "boolean" } }, "title": "ThreadListParams", "type": "object" }