okami.mom/albedo
git clone https://git.nkp.pet/okami.mom/albedo
711d48a
main
1# Daemon protocol 3. See http-api-design.md for behavioral semantics. 2openapi : 3.2.1 3info : 4title : Albedo daemon API 5version : 3.0.0 6summary : 'Protocol 3: typed HTTP resources and SSE.' 7description : This file owns daemon request and response shapes. 8http-api-design.md owns ordering, atomicity, retry and recovery behavior. Server and clients switch 9together; there are no legacy route aliases. Unknown request fields and duplicate JSON keys are errors. 10Unknown response fields may be ignored by clients. No operation starts or replaces a daemon. JSON 11and SSE frames are at most 1 MiB unless an extension explicitly overrides that limit. Ordinary request 12bodies are at most 64 KiB, input bodies 72,200,000 bytes and proxy bodies 32,000,000 bytes. UTF-8 and 13encoded-byte limits are described with x-max-utf8-bytes/x-max-encoded-bytes; standard schema validation 14alone does not assert them. Examples use synthetic secrets only. JSON and text responses of at least 151 KiB, and session event streams, use Content-Encoding zstd when Accept-Encoding admits it; limits 16and ETags apply to the decoded representation. When capabilities include zstd_requests, a request 17body may use Content-Encoding zstd as one frame that declares its decoded size. 18jsonSchemaDialect : https://json-schema.org/draft/2020-12/schema 19externalDocs : 20description : Behavior, ownership, feature coverage and verification. 21url : http-api-design.md 22security : 23- DaemonBearer : [] 24tags : 25- name : server 26- name : settings 27- name : storage 28- name : sessions 29- name : models 30- name : workspaces 31- name : hosts 32- name : auth 33- name : work 34- name : paperclips 35- name : web-search 36- name : schedule 37- name : links 38- name : webhooks 39- name : proxy 40paths : 41/server : 42get : 43operationId : getServer 44summary : Read daemon identity and capabilities 45tags : 46- server 47responses : 48'200' : 49description : Successful result. 50content : 51application/json : 52schema : 53$ref : '#/components/schemas/Server' 54examples : 55Server : 56value : 57instance_id : instance-1 58protocol : 3 59state : ready 60capabilities : 61durable_inputs : 1 62session_replay : 1 63collection_invalidation : 1 64tool_progress : 1 65storage_report : 1 66build : example-build 67digest : null 68extensions : 69- name : work 70version : 1 71quota : null 72notices : [] 73'400' : 74$ref : '#/components/responses/Problem400' 75'401' : 76$ref : '#/components/responses/Problem401' 77'403' : 78$ref : '#/components/responses/Problem403' 79'405' : 80$ref : '#/components/responses/Problem405' 81'406' : 82$ref : '#/components/responses/Problem406' 83'503' : 84$ref : '#/components/responses/Problem503' 85description : No startup or replacement. Authentication and protocol failures remain actionable errors. 86Pagination is valid only with include=quota_history. 87parameters : 88- name : include 89in : query 90required : false 91schema : 92type : string 93enum : [ quota_history ] 94- $ref : '#/components/parameters/Limit' 95- $ref : '#/components/parameters/Next' 96- name : quota_provider 97in : query 98required : false 99description : Exact provider ID to filter quota history. Requires include=quota_history, quota_account, and quota_limit. 100schema : 101type : string 102- name : quota_account 103in : query 104required : false 105description : Exact account label to filter quota history. Requires include=quota_history, quota_provider, and quota_limit. 106schema : 107type : string 108- name : quota_limit 109in : query 110required : false 111description : Exact limit ID to filter quota history. Requires include=quota_history, quota_provider, and quota_account. 112schema : 113type : string 114- name : quota_since 115in : query 116required : false 117description : Filter quota history to observations at or after this RFC 3339 UTC timestamp. Requires include=quota_history and the limit filter trio. 118schema : 119$ref : '#/components/schemas/Timestamp' 120/server/shutdown : 121post : 122operationId : shutdownServer 123summary : Drain the identified daemon 124tags : 125- server 126responses : 127'202' : 128description : Successful result. 129content : 130application/json : 131schema : 132$ref : '#/components/schemas/Shutdown' 133'400' : 134$ref : '#/components/responses/Problem400' 135'401' : 136$ref : '#/components/responses/Problem401' 137'403' : 138$ref : '#/components/responses/Problem403' 139'405' : 140$ref : '#/components/responses/Problem405' 141'406' : 142$ref : '#/components/responses/Problem406' 143'503' : 144$ref : '#/components/responses/Problem503' 145'413' : 146$ref : '#/components/responses/Problem413' 147'415' : 148$ref : '#/components/responses/Problem415' 149'409' : 150$ref : '#/components/responses/Problem409' 151description : No automatic recovery or replay. The local launcher alone may offer replacement. 152requestBody : 153required : true 154content : 155application/json : 156schema : 157$ref : '#/components/schemas/ShutdownRequest' 158description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 159/settings : 160get : 161operationId : getSettings 162summary : Read shared settings or one canonical group 163tags : 164- settings 165responses : 166'200' : 167description : Successful result. 168headers : 169ETag : 170$ref : '#/components/headers/ETag' 171content : 172application/json : 173schema : 174$ref : '#/components/schemas/SettingsRead' 175'400' : 176$ref : '#/components/responses/Problem400' 177'401' : 178$ref : '#/components/responses/Problem401' 179'403' : 180$ref : '#/components/responses/Problem403' 181'405' : 182$ref : '#/components/responses/Problem405' 183'406' : 184$ref : '#/components/responses/Problem406' 185'503' : 186$ref : '#/components/responses/Problem503' 187description : Without group, return Settings and observed group validators. With group, return that 188group only; the ETag covers that representation. 189parameters : 190- name : group 191in : query 192required : false 193schema : 194type : string 195enum : [ providers , mcp , extensions , capabilities , models , ui ] 196patch : 197operationId : patchSettings 198summary : Atomically edit one settings group 199tags : 200- settings 201responses : 202'200' : 203description : Successful result. 204content : 205application/json : 206schema : 207$ref : '#/components/schemas/SettingsChange' 208'400' : 209$ref : '#/components/responses/Problem400' 210'401' : 211$ref : '#/components/responses/Problem401' 212'403' : 213$ref : '#/components/responses/Problem403' 214'405' : 215$ref : '#/components/responses/Problem405' 216'406' : 217$ref : '#/components/responses/Problem406' 218'503' : 219$ref : '#/components/responses/Problem503' 220'413' : 221$ref : '#/components/responses/Problem413' 222'415' : 223$ref : '#/components/responses/Problem415' 224'409' : 225$ref : '#/components/responses/Problem409' 226'412' : 227$ref : '#/components/responses/Problem412' 228'428' : 229$ref : '#/components/responses/Problem428' 230description : Query group selects its corresponding schema. Omitted fields keep values. Null removes 231only nullable fields or map entries. Candidate validation precedes the complete group commit. 232No lost-response retry. 233parameters : 234- name : group 235in : query 236required : true 237schema : 238type : string 239enum : [ providers , mcp , extensions , capabilities , models , ui ] 240- $ref : '#/components/parameters/IfMatch' 241requestBody : 242required : true 243content : 244application/merge-patch+json : 245schema : 246$ref : '#/components/schemas/SettingsPatch' 247examples : 248ProviderSettingsPatch : 249value : 250default_profile : personal 251profiles : 252personal : 253extension : openai 254endpoint : https://provider.example/v1 255protocol : responses 256model : example-model 257effort : null 258image_edge : null 259account_id : null 260project : null 261location : null 262api_key : synthetic-example-key 263description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 264/storage : 265get : 266operationId : getStorage 267summary : Read storage accounting 268tags : 269- storage 270responses : 271'200' : 272description : Successful result. 273content : 274application/json : 275schema : 276$ref : '#/components/schemas/StorageReport' 277examples : 278StorageReport : 279value : 280database : 281main_file_bytes : 8192 282wal_bytes : 0 283page_size_bytes : 4096 284page_count : 2 285free_page_count : 0 286used_bytes : 8192 287sessions : 288items : [] 289next : null 290total_count : 0 291total_estimated_content_bytes : 0 292images : 293count : 0 294bytes : 0 295files : 296items : [] 297next : null 298totals : 299kernel_bytes : 0 300backup_bytes : 0 301other_bytes : 0 302recent_backup_bytes : 0 303recent_backup_count : 0 304measured_at : '2026-10-02T14:00:00Z' 305'400' : 306$ref : '#/components/responses/Problem400' 307'401' : 308$ref : '#/components/responses/Problem401' 309'403' : 310$ref : '#/components/responses/Problem403' 311'405' : 312$ref : '#/components/responses/Problem405' 313'406' : 314$ref : '#/components/responses/Problem406' 315'503' : 316$ref : '#/components/responses/Problem503' 317description : 'Each section has its own continuation. Totals cover complete storage. Paths never 318authorize local mutation. Requires capability `storage_report: 1`.' 319parameters : 320- name : sessions_next 321in : query 322required : false 323schema : 324$ref : '#/components/schemas/PageToken' 325- name : files_next 326in : query 327required : false 328schema : 329$ref : '#/components/schemas/PageToken' 330- $ref : '#/components/parameters/Limit' 331/sessions : 332get : 333operationId : listSessions 334summary : Browse sessions or watch collection changes 335tags : 336- sessions 337responses : 338'200' : 339description : Successful result. 340content : 341application/json : 342schema : 343$ref : '#/components/schemas/SessionPage' 344examples : 345SessionPage : 346value : 347items : 348- id : 01a0fcea-2b00-7000-8000-000000000001 349name : New session 350automatic_name : New session 351workspace : /workspace/project 352location : 353host : null 354user : null 355path : /workspace/project 356label : null 357parent_id : null 358root_id : 01a0fcea-2b00-7000-8000-000000000001 359address : null 360depth : 0 361closed : false 362created_at : '2026-10-02T14:00:00Z' 363activity_at : '2026-10-02T14:00:00Z' 364provider_profile : personal 365model : example-model 366effort : null 367status : 368phase : idle 369run_id : null 370interrupt_requested : false 371blocking_reason : null 372preview : 373text : '' 374transcript_count : 0 375truncated : false 376preferences : 377pinned : false 378pin_order : null 379archived : false 380opens : 0 381current_progress : [] 382active_output : [] 383activity : 384lines : [] 385output_scalars : 0 386output_utf8_bytes : 0 387observed_at : '2026-10-02T14:00:00Z' 388latest_input : null 389latest_answer : null 390cursor : 391generation : J6kYj6IGcXyP3eMIp-WL3A 392sequence : 0 393next : null 394text/event-stream : 395itemSchema : 396$ref : '#/components/schemas/CollectionSSE' 397headers : 398Vary : 399$ref : '#/components/headers/Vary' 400'400' : 401$ref : '#/components/responses/Problem400' 402'401' : 403$ref : '#/components/responses/Problem401' 404'403' : 405$ref : '#/components/responses/Problem403' 406'405' : 407$ref : '#/components/responses/Problem405' 408'406' : 409$ref : '#/components/responses/Problem406' 410'503' : 411$ref : '#/components/responses/Problem503' 412'404' : 413$ref : '#/components/responses/Problem404' 414description : JSON defaults to roots, or all with parent/family. Parent and family are exclusive. 415Explicit roots with either is invalid. SSE accepts the same scope filters, excluding sort/limit/next; 416no cursor or replay. Subscribe, wait for ready, then read pages. Closure or overflow repeats this 417flow. 418parameters : 419- name : scope 420in : query 421required : false 422schema : 423type : string 424enum : [ roots , all ] 425- name : parent_id 426in : query 427required : false 428schema : 429$ref : '#/components/schemas/ID' 430- name : family_id 431in : query 432required : false 433schema : 434$ref : '#/components/schemas/ID' 435- name : workspace 436in : query 437required : false 438schema : 439$ref : '#/components/schemas/Workspace' 440- name : search 441in : query 442required : false 443schema : 444type : string 445maxLength : 256 446- name : archived 447in : query 448required : false 449schema : 450type : boolean 451- name : needs_reload 452in : query 453required : false 454schema : 455type : boolean 456- name : sort 457in : query 458required : false 459schema : 460type : string 461enum : [ activity , frequent ] 462default : activity 463- $ref : '#/components/parameters/Limit' 464- $ref : '#/components/parameters/Next' 465/sessions/{session_id} : 466get : 467operationId : getSession 468summary : Read or watch one session 469tags : 470- sessions 471responses : 472'200' : 473description : Successful result. 474headers : 475ETag : 476$ref : '#/components/headers/ETag' 477Vary : 478$ref : '#/components/headers/Vary' 479content : 480application/json : 481schema : 482$ref : '#/components/schemas/SessionRead' 483examples : 484Session : 485value : 486id : 01a0fcea-2b00-7000-8000-000000000001 487name : New session 488automatic_name : New session 489workspace : /workspace/project 490location : 491host : null 492user : null 493path : /workspace/project 494label : null 495parent_id : null 496root_id : 01a0fcea-2b00-7000-8000-000000000001 497address : null 498depth : 0 499closed : false 500created_at : '2026-10-02T14:00:00Z' 501activity_at : '2026-10-02T14:00:00Z' 502provider_profile : personal 503model : example-model 504effort : null 505status : 506phase : idle 507run_id : null 508interrupt_requested : false 509blocking_reason : null 510preview : 511text : '' 512transcript_count : 0 513truncated : false 514preferences : 515pinned : false 516pin_order : null 517archived : false 518opens : 0 519current_progress : [] 520active_output : [] 521activity : 522lines : [] 523output_scalars : 0 524output_utf8_bytes : 0 525observed_at : '2026-10-02T14:00:00Z' 526latest_input : null 527latest_answer : null 528cursor : 529generation : J6kYj6IGcXyP3eMIp-WL3A 530sequence : 0 531creation : 532submitted : 533kind : new 534workspace : /workspace/project 535name : null 536provider_profile : null 537model : null 538effort : null 539resolved : 540workspace : /workspace/project 541provider_profile : personal 542model : example-model 543effort : null 544revision : config-1 545family_revision : family-1 546configuration_resource : 547url : /sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration 548etag : '"session-config-1"' 549value : 550id : 01a0fcea-2b00-7000-8000-000000000001 551name : New session 552workspace : /workspace/project 553provider_profile : personal 554model : example-model 555effort : null 556preferences : 557pinned : false 558pin_order : null 559archived : false 560selection : 561extensions : {} 562skills : {} 563instructions : {} 564mcp : {} 565revision : config-1 566family_revision : family-1 567workspace_change : null 568selection : 569overrides : 570extensions : {} 571skills : {} 572instructions : {} 573mcp : {} 574effective : 575extensions : {} 576skills : {} 577instructions : {} 578mcp : {} 579composition : 580desired_revision : composition-1 581loaded_revision : null 582needs_reload : true 583dependencies : {} 584quarantine : [] 585availability : {} 586kernel : 587instance_id : null 588state : none 589stage : null 590build : null 591stale : false 592staleness_reasons : [] 593live_job_count : 0 594running_jobs : [] 595pending_inputs : [] 596input_order : 0 597usage : 598model : null 599observed_at : null 600prompt_tokens : null 601cached_prompt_tokens : null 602cache_write_tokens : null 603completion_tokens : null 604total_tokens : null 605elapsed_ms : null 606tokens_per_second : null 607context_window_tokens : null 608cache_ttl_seconds : null 609cache_fade : [] 610history : 611items : [] 612older : null 613newer : null 614high_water : 0 615glances : [] 616text/event-stream : 617itemSchema : 618$ref : '#/components/schemas/SessionSSE' 619'400' : 620$ref : '#/components/responses/Problem400' 621'401' : 622$ref : '#/components/responses/Problem401' 623'403' : 624$ref : '#/components/responses/Problem403' 625'405' : 626$ref : '#/components/responses/Problem405' 627'406' : 628$ref : '#/components/responses/Problem406' 629'503' : 630$ref : '#/components/responses/Problem503' 631'404' : 632$ref : '#/components/responses/Problem404' 633'410' : 634$ref : '#/components/responses/Problem410' 635description : JSON defaults to complete Session. Configuration JSON excludes tail and replay parameters. 636SSE accepts tail and after_generation/after_seq, without view. Initial subscription omits both 637cursors; reconnect keeps the fully consumed pair. A missing generation requests reset. after_generation 638without after_seq is invalid. Neither auth failure nor closure starts a daemon. 639parameters : 640- name : session_id 641in : path 642required : true 643schema : 644$ref : '#/components/schemas/ID' 645- name : view 646in : query 647required : false 648schema : 649type : string 650enum : [ configuration ] 651- name : tail 652in : query 653required : false 654schema : 655type : integer 656minimum : 0 657maximum : 200 658default : 100 659- name : after_generation 660in : query 661required : false 662schema : 663$ref : '#/components/schemas/Generation' 664- name : after_seq 665in : query 666required : false 667schema : 668$ref : '#/components/schemas/Counter' 669put : 670operationId : createSession 671summary : Create a new, forked or child session 672tags : 673- sessions 674responses : 675'201' : 676description : Successful result. 677headers : 678Location : 679$ref : '#/components/headers/Location' 680ETag : 681$ref : '#/components/headers/ETag' 682content : 683application/json : 684schema : 685$ref : '#/components/schemas/Session' 686examples : 687Session : 688value : 689id : 01a0fcea-2b00-7000-8000-000000000001 690name : New session 691automatic_name : New session 692workspace : /workspace/project 693location : 694host : null 695user : null 696path : /workspace/project 697label : null 698parent_id : null 699root_id : 01a0fcea-2b00-7000-8000-000000000001 700address : null 701depth : 0 702closed : false 703created_at : '2026-10-02T14:00:00Z' 704activity_at : '2026-10-02T14:00:00Z' 705provider_profile : personal 706model : example-model 707effort : null 708status : 709phase : idle 710run_id : null 711interrupt_requested : false 712blocking_reason : null 713preview : 714text : '' 715transcript_count : 0 716truncated : false 717preferences : 718pinned : false 719pin_order : null 720archived : false 721opens : 0 722current_progress : [] 723active_output : [] 724activity : 725lines : [] 726output_scalars : 0 727output_utf8_bytes : 0 728observed_at : '2026-10-02T14:00:00Z' 729latest_input : null 730latest_answer : null 731cursor : 732generation : J6kYj6IGcXyP3eMIp-WL3A 733sequence : 0 734creation : 735submitted : 736kind : new 737workspace : /workspace/project 738name : null 739provider_profile : null 740model : null 741effort : null 742resolved : 743workspace : /workspace/project 744provider_profile : personal 745model : example-model 746effort : null 747revision : config-1 748family_revision : family-1 749configuration_resource : 750url : /sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration 751etag : '"session-config-1"' 752value : 753id : 01a0fcea-2b00-7000-8000-000000000001 754name : New session 755workspace : /workspace/project 756provider_profile : personal 757model : example-model 758effort : null 759preferences : 760pinned : false 761pin_order : null 762archived : false 763selection : 764extensions : {} 765skills : {} 766instructions : {} 767mcp : {} 768revision : config-1 769family_revision : family-1 770workspace_change : null 771selection : 772overrides : 773extensions : {} 774skills : {} 775instructions : {} 776mcp : {} 777effective : 778extensions : {} 779skills : {} 780instructions : {} 781mcp : {} 782composition : 783desired_revision : composition-1 784loaded_revision : null 785needs_reload : true 786dependencies : {} 787quarantine : [] 788availability : {} 789kernel : 790instance_id : null 791state : none 792stage : null 793build : null 794stale : false 795staleness_reasons : [] 796live_job_count : 0 797running_jobs : [] 798pending_inputs : [] 799input_order : 0 800usage : 801model : null 802observed_at : null 803prompt_tokens : null 804cached_prompt_tokens : null 805cache_write_tokens : null 806completion_tokens : null 807total_tokens : null 808elapsed_ms : null 809tokens_per_second : null 810context_window_tokens : null 811cache_ttl_seconds : null 812cache_fade : [] 813history : 814items : [] 815older : null 816newer : null 817high_water : 0 818glances : [] 819'400' : 820$ref : '#/components/responses/Problem400' 821'401' : 822$ref : '#/components/responses/Problem401' 823'403' : 824$ref : '#/components/responses/Problem403' 825'405' : 826$ref : '#/components/responses/Problem405' 827'406' : 828$ref : '#/components/responses/Problem406' 829'503' : 830$ref : '#/components/responses/Problem503' 831'413' : 832$ref : '#/components/responses/Problem413' 833'415' : 834$ref : '#/components/responses/Problem415' 835'409' : 836$ref : '#/components/responses/Problem409' 837'410' : 838$ref : '#/components/responses/Problem410' 839'412' : 840$ref : '#/components/responses/Problem412' 841'428' : 842$ref : '#/components/responses/Problem428' 843'429' : 844$ref : '#/components/responses/Problem429' 845description : Session ID must be UUIDv7. If-None-Match:* is required. Retain the identity and submitted 846intent after response loss. An existing resource returns 412; GET creation.submitted proves original 847intent. Child membership and task admission commit together. 848parameters : 849- name : session_id 850in : path 851required : true 852schema : 853$ref : '#/components/schemas/UUIDv7' 854- $ref : '#/components/parameters/IfNoneMatch' 855requestBody : 856required : true 857content : 858application/json : 859schema : 860$ref : '#/components/schemas/SessionCreationRequest' 861examples : 862NewSessionRequest : 863value : 864kind : new 865workspace : /workspace/project 866description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 867patch : 868operationId : patchSession 869summary : Edit configuration or move workspace 870tags : 871- sessions 872responses : 873'200' : 874description : Successful result. 875content : 876application/json : 877schema : 878$ref : '#/components/schemas/SessionChange' 879'400' : 880$ref : '#/components/responses/Problem400' 881'401' : 882$ref : '#/components/responses/Problem401' 883'403' : 884$ref : '#/components/responses/Problem403' 885'405' : 886$ref : '#/components/responses/Problem405' 887'406' : 888$ref : '#/components/responses/Problem406' 889'503' : 890$ref : '#/components/responses/Problem503' 891'413' : 892$ref : '#/components/responses/Problem413' 893'415' : 894$ref : '#/components/responses/Problem415' 895'404' : 896$ref : '#/components/responses/Problem404' 897'409' : 898$ref : '#/components/responses/Problem409' 899'412' : 900$ref : '#/components/responses/Problem412' 901'428' : 902$ref : '#/components/responses/Problem428' 903description : Use the observed configuration URL and validator. Workspace is a standalone change 904with family_revision. Busy target fails before commit; busy descendants follow a committed parent 905move at idle. Other configuration fields commit together. No automatic lost-response retry. 906parameters : 907- name : session_id 908in : path 909required : true 910schema : 911$ref : '#/components/schemas/ID' 912- name : view 913in : query 914required : true 915schema : 916const : configuration 917- $ref : '#/components/parameters/IfMatch' 918requestBody : 919required : true 920content : 921application/merge-patch+json : 922schema : 923$ref : '#/components/schemas/SessionChangeRequest' 924examples : 925SessionPatch : 926value : 927selection : 928extensions : 929browser : null 930skills : 931candidate-1 : false 932catalog_revision : discovery-1 933description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 934delete : 935operationId : deleteSession 936summary : Delete a leaf or captured subtree 937tags : 938- sessions 939responses : 940'200' : 941description : Successful result. 942content : 943application/json : 944schema : 945$ref : '#/components/schemas/SessionDeletion' 946'400' : 947$ref : '#/components/responses/Problem400' 948'401' : 949$ref : '#/components/responses/Problem401' 950'403' : 951$ref : '#/components/responses/Problem403' 952'405' : 953$ref : '#/components/responses/Problem405' 954'406' : 955$ref : '#/components/responses/Problem406' 956'503' : 957$ref : '#/components/responses/Problem503' 958'413' : 959$ref : '#/components/responses/Problem413' 960'415' : 961$ref : '#/components/responses/Problem415' 962'404' : 963$ref : '#/components/responses/Problem404' 964'409' : 965$ref : '#/components/responses/Problem409' 966'412' : 967$ref : '#/components/responses/Problem412' 968'428' : 969$ref : '#/components/responses/Problem428' 970description : Leaf requires idle and no children. Subtree requires family_revision, gates new children, 971interrupts captured members and deletes deepest first. Partial outcomes are explicit. Refresh 972before confirming a new attempt; never automatically replay after transport loss. 973parameters : 974- name : session_id 975in : path 976required : true 977schema : 978$ref : '#/components/schemas/ID' 979- name : view 980in : query 981required : true 982schema : 983const : configuration 984- $ref : '#/components/parameters/IfMatch' 985- name : scope 986in : query 987required : false 988schema : 989type : string 990enum : [ leaf , subtree ] 991default : leaf 992- name : family_revision 993in : query 994required : false 995schema : 996$ref : '#/components/schemas/ID' 997/sessions/{session_id}/visits/{visit_id} : 998put : 999operationId : recordVisit 1000summary : Count one deliberate opening 1001tags : 1002- sessions 1003responses : 1004'200' : 1005description : Successful result. 1006content : 1007application/json : 1008schema : 1009$ref : '#/components/schemas/Visit' 1010'400' : 1011$ref : '#/components/responses/Problem400' 1012'401' : 1013$ref : '#/components/responses/Problem401' 1014'403' : 1015$ref : '#/components/responses/Problem403' 1016'405' : 1017$ref : '#/components/responses/Problem405' 1018'406' : 1019$ref : '#/components/responses/Problem406' 1020'503' : 1021$ref : '#/components/responses/Problem503' 1022'413' : 1023$ref : '#/components/responses/Problem413' 1024'415' : 1025$ref : '#/components/responses/Problem415' 1026'404' : 1027$ref : '#/components/responses/Problem404' 1028'410' : 1029$ref : '#/components/responses/Problem410' 1030description : Visit ID is UUIDv7. Same identity increments once; reads and refreshes never count. 1031parameters : 1032- name : visit_id 1033in : path 1034required : true 1035schema : 1036$ref : '#/components/schemas/UUIDv7' 1037- name : session_id 1038in : path 1039required : true 1040schema : 1041$ref : '#/components/schemas/ID' 1042requestBody : 1043required : true 1044content : 1045application/json : 1046schema : 1047$ref : '#/components/schemas/EmptyRequest' 1048description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1049/sessions/{session_id}/inputs/{input_id} : 1050put : 1051operationId : putInput 1052summary : Admit immutable identified input 1053tags : 1054- sessions 1055responses : 1056'202' : 1057description : Successful result. 1058content : 1059application/json : 1060schema : 1061$ref : '#/components/schemas/Input' 1062examples : 1063Input : 1064value : 1065id : 01a0fcea-2b00-7000-8000-000000000002 1066session_id : 01a0fcea-2b00-7000-8000-000000000001 1067kind : message 1068admission : accepted 1069http_status : 202 1070problem : null 1071accepted_at : '2026-10-02T14:00:00Z' 1072acceptance_order : 1 1073delivery : pending 1074blocking_reason : null 1075transcript_position : null 1076turn : null 1077client_id : draft-1 1078'400' : 1079$ref : '#/components/responses/Problem400' 1080'401' : 1081$ref : '#/components/responses/Problem401' 1082'403' : 1083$ref : '#/components/responses/Problem403' 1084'405' : 1085$ref : '#/components/responses/Problem405' 1086'406' : 1087$ref : '#/components/responses/Problem406' 1088'503' : 1089$ref : '#/components/responses/Problem503' 1090'413' : 1091$ref : '#/components/responses/Problem413' 1092'415' : 1093$ref : '#/components/responses/Problem415' 1094'404' : 1095$ref : '#/components/responses/Problem404' 1096'409' : 1097$ref : '#/components/responses/Problem409' 1098'410' : 1099$ref : '#/components/responses/Problem410' 1100'429' : 1101description : Retained rejection, even if capacity later clears. 1102content : 1103application/problem+json : 1104schema : 1105$ref : '#/components/schemas/Problem' 1106examples : 1107queue_full : 1108value : 1109type : about:blank 1110title : Queue full 1111status : 429 1112detail : This session already has 32 waiting inputs. 1113code : queue_full 1114decision : 1115kind : input 1116input : 1117id : 01a0fcea-2b00-7000-8000-000000000002 1118session_id : 01a0fcea-2b00-7000-8000-000000000001 1119kind : message 1120admission : rejected 1121http_status : 429 1122problem : 1123type : about:blank 1124title : Queue full 1125status : 429 1126detail : This session already has 32 waiting inputs. 1127code : queue_full 1128accepted_at : null 1129acceptance_order : null 1130delivery : null 1131blocking_reason : null 1132transcript_position : null 1133turn : null 1134client_id : draft-1 1135headers : 1136Retry-After : 1137$ref : '#/components/headers/RetryAfter' 1138description : Input ID is UUIDv7. Duplicate lookup precedes mutable validation and returns the original 1139admission status with current delivery. Queue-full rejection remains rejected. No If-None-Match. 1140Preserve the exact intent and identity while recovering an uncertain response. 1141parameters : 1142- name : input_id 1143in : path 1144required : true 1145schema : 1146$ref : '#/components/schemas/UUIDv7' 1147- name : session_id 1148in : path 1149required : true 1150schema : 1151$ref : '#/components/schemas/ID' 1152requestBody : 1153required : true 1154content : 1155application/json : 1156schema : 1157$ref : '#/components/schemas/InputRequest' 1158examples : 1159MessageInputRequest : 1160value : 1161kind : message 1162text : Fix the parser. 1163client_id : draft-1 1164description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1165get : 1166operationId : getInput 1167summary : Read a durable input outcome 1168tags : 1169- sessions 1170responses : 1171'200' : 1172description : Successful result. 1173content : 1174application/json : 1175schema : 1176$ref : '#/components/schemas/Input' 1177'400' : 1178$ref : '#/components/responses/Problem400' 1179'401' : 1180$ref : '#/components/responses/Problem401' 1181'403' : 1182$ref : '#/components/responses/Problem403' 1183'405' : 1184$ref : '#/components/responses/Problem405' 1185'406' : 1186$ref : '#/components/responses/Problem406' 1187'503' : 1188$ref : '#/components/responses/Problem503' 1189'404' : 1190$ref : '#/components/responses/Problem404' 1191'410' : 1192$ref : '#/components/responses/Problem410' 1193description : Available after session deletion. Accepted is not consumed or answered. Retain pending 1194and unfinished-turn identities; terminal decisions last seven days. Unknown old UUIDv7 returns 1195410, never a fresh admission. 1196parameters : 1197- name : input_id 1198in : path 1199required : true 1200schema : 1201$ref : '#/components/schemas/ID' 1202- name : session_id 1203in : path 1204required : true 1205schema : 1206$ref : '#/components/schemas/ID' 1207/sessions/{session_id}/inputs/{input_id}/cancel : 1208post : 1209operationId : cancelInput 1210summary : Cancel or interrupt only this input 1211tags : 1212- sessions 1213responses : 1214'200' : 1215description : Successful result. 1216content : 1217application/json : 1218schema : 1219$ref : '#/components/schemas/InputCancellation' 1220'400' : 1221$ref : '#/components/responses/Problem400' 1222'401' : 1223$ref : '#/components/responses/Problem401' 1224'403' : 1225$ref : '#/components/responses/Problem403' 1226'405' : 1227$ref : '#/components/responses/Problem405' 1228'406' : 1229$ref : '#/components/responses/Problem406' 1230'503' : 1231$ref : '#/components/responses/Problem503' 1232'413' : 1233$ref : '#/components/responses/Problem413' 1234'415' : 1235$ref : '#/components/responses/Problem415' 1236'404' : 1237$ref : '#/components/responses/Problem404' 1238'410' : 1239$ref : '#/components/responses/Problem410' 1240description : Never interrupts a later unrelated turn. shared_running leaves a shared turn running; 1241retry only inspects or acts on this same input. 1242parameters : 1243- name : input_id 1244in : path 1245required : true 1246schema : 1247$ref : '#/components/schemas/ID' 1248- name : session_id 1249in : path 1250required : true 1251schema : 1252$ref : '#/components/schemas/ID' 1253requestBody : 1254required : true 1255content : 1256application/json : 1257schema : 1258$ref : '#/components/schemas/EmptyRequest' 1259description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1260/sessions/{session_id}/interrupt : 1261post : 1262operationId : interruptSession 1263summary : Interrupt a captured run and waiting prefix 1264tags : 1265- sessions 1266responses : 1267'200' : 1268description : Successful result. 1269content : 1270application/json : 1271schema : 1272$ref : '#/components/schemas/Interruption' 1273'400' : 1274$ref : '#/components/responses/Problem400' 1275'401' : 1276$ref : '#/components/responses/Problem401' 1277'403' : 1278$ref : '#/components/responses/Problem403' 1279'405' : 1280$ref : '#/components/responses/Problem405' 1281'406' : 1282$ref : '#/components/responses/Problem406' 1283'503' : 1284$ref : '#/components/responses/Problem503' 1285'413' : 1286$ref : '#/components/responses/Problem413' 1287'415' : 1288$ref : '#/components/responses/Problem415' 1289'404' : 1290$ref : '#/components/responses/Problem404' 1291description : Capture run_id and through_input_order from the installed session. Retry cannot interrupt 1292a later run or cancel newer inputs. 1293parameters : 1294- name : session_id 1295in : path 1296required : true 1297schema : 1298$ref : '#/components/schemas/ID' 1299requestBody : 1300required : true 1301content : 1302application/json : 1303schema : 1304$ref : '#/components/schemas/InterruptRequest' 1305description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1306/sessions/{session_id}/active-output/{content_id} : 1307get : 1308operationId : getActiveOutputContent 1309summary : Read unfinished output at a captured snapshot cutoff 1310tags : 1311- sessions 1312description : Pages contain at most 262144 UTF-8 bytes and remain within the captured cutoff. Preserve the required snapshot query when following next. 1313parameters : 1314- name : session_id 1315in : path 1316required : true 1317schema : 1318$ref : '#/components/schemas/ID' 1319- name : content_id 1320in : path 1321required : true 1322schema : 1323$ref : '#/components/schemas/ID' 1324- name : snapshot 1325in : query 1326required : true 1327schema : 1328$ref : '#/components/schemas/PageToken' 1329- name : next 1330in : query 1331schema : 1332$ref : '#/components/schemas/PageToken' 1333responses : 1334'200' : 1335description : Bounded UTF-8 content page at the signed snapshot cutoff 1336content : 1337application/json : 1338schema : 1339$ref : '#/components/schemas/EntryContentPage' 1340'400' : 1341$ref : '#/components/responses/Problem400' 1342'403' : 1343$ref : '#/components/responses/Problem403' 1344'410' : 1345$ref : '#/components/responses/Problem410' 1346'503' : 1347$ref : '#/components/responses/Problem503' 1348/sessions/{session_id}/history : 1349get : 1350operationId : getHistory 1351summary : Page history or fork checkpoints 1352tags : 1353- sessions 1354responses : 1355'200' : 1356description : Successful result. 1357content : 1358application/json : 1359schema : 1360$ref : '#/components/schemas/HistoryRead' 1361'400' : 1362$ref : '#/components/responses/Problem400' 1363'401' : 1364$ref : '#/components/responses/Problem401' 1365'403' : 1366$ref : '#/components/responses/Problem403' 1367'405' : 1368$ref : '#/components/responses/Problem405' 1369'406' : 1370$ref : '#/components/responses/Problem406' 1371'503' : 1372$ref : '#/components/responses/Problem503' 1373'404' : 1374$ref : '#/components/responses/Problem404' 1375description : Use only one of before/after/next. Durable positions are independent of actor replay. 1376Pages are ascending and preserve complete display groups where bounded. 1377parameters : 1378- name : session_id 1379in : path 1380required : true 1381schema : 1382$ref : '#/components/schemas/ID' 1383- name : view 1384in : query 1385required : false 1386schema : 1387type : string 1388enum : [ entries , checkpoints ] 1389default : entries 1390- name : before 1391in : query 1392required : false 1393schema : 1394$ref : '#/components/schemas/Counter' 1395- name : after 1396in : query 1397required : false 1398schema : 1399$ref : '#/components/schemas/Counter' 1400- $ref : '#/components/parameters/Next' 1401- name : limit 1402in : query 1403required : false 1404schema : 1405type : integer 1406minimum : 1 1407maximum : 200 1408default : 100 1409/sessions/{session_id}/history/{entry_id} : 1410get : 1411operationId : getHistoryContent 1412summary : Read full content in bounded pieces 1413tags : 1414- sessions 1415responses : 1416'200' : 1417description : Successful result. 1418content : 1419application/json : 1420schema : 1421$ref : '#/components/schemas/EntryContentPage' 1422'400' : 1423$ref : '#/components/responses/Problem400' 1424'401' : 1425$ref : '#/components/responses/Problem401' 1426'403' : 1427$ref : '#/components/responses/Problem403' 1428'405' : 1429$ref : '#/components/responses/Problem405' 1430'406' : 1431$ref : '#/components/responses/Problem406' 1432'503' : 1433$ref : '#/components/responses/Problem503' 1434'404' : 1435$ref : '#/components/responses/Problem404' 1436description : Follow next until null. UTF-8 pieces end at character boundaries. Reconstruct stored 1437content, not shortened previews. Image fields are not paged here; their references name the 1438image resource. 1439parameters : 1440- name : entry_id 1441in : path 1442required : true 1443schema : 1444$ref : '#/components/schemas/ID' 1445- name : session_id 1446in : path 1447required : true 1448schema : 1449$ref : '#/components/schemas/ID' 1450- $ref : '#/components/parameters/Next' 1451/sessions/{session_id}/history/{entry_id}/{field} : 1452get : 1453operationId : getHistoryImage 1454summary : Read one image field as its own bytes 1455tags : 1456- sessions 1457responses : 1458'200' : 1459description : The decoded image, typed by its MIME type. 1460content : 1461image/png : 1462schema : 1463type : string 1464contentMediaType : image/png 1465image/jpeg : 1466schema : 1467type : string 1468contentMediaType : image/jpeg 1469image/webp : 1470schema : 1471type : string 1472contentMediaType : image/webp 1473'400' : 1474$ref : '#/components/responses/Problem400' 1475'401' : 1476$ref : '#/components/responses/Problem401' 1477'403' : 1478$ref : '#/components/responses/Problem403' 1479'405' : 1480$ref : '#/components/responses/Problem405' 1481'503' : 1482$ref : '#/components/responses/Problem503' 1483'404' : 1484$ref : '#/components/responses/Problem404' 1485description : Image references in history point here. The body is the stored image itself, 1486not base64, and is never content-coded. 1487parameters : 1488- name : session_id 1489in : path 1490required : true 1491schema : 1492$ref : '#/components/schemas/ID' 1493- name : entry_id 1494in : path 1495required : true 1496schema : 1497$ref : '#/components/schemas/ID' 1498- name : field 1499in : path 1500required : true 1501schema : 1502type : string 1503minLength : 1 1504maxLength : 256 1505/sessions/{session_id}/context : 1506get : 1507operationId : getContext 1508summary : Inspect prepared context or request records 1509tags : 1510- sessions 1511responses : 1512'200' : 1513description : Successful result. 1514content : 1515application/json : 1516schema : 1517$ref : '#/components/schemas/ContextRead' 1518'400' : 1519$ref : '#/components/responses/Problem400' 1520'401' : 1521$ref : '#/components/responses/Problem401' 1522'403' : 1523$ref : '#/components/responses/Problem403' 1524'405' : 1525$ref : '#/components/responses/Problem405' 1526'406' : 1527$ref : '#/components/responses/Problem406' 1528'503' : 1529$ref : '#/components/responses/Problem503' 1530'404' : 1531$ref : '#/components/responses/Problem404' 1532'410' : 1533$ref : '#/components/responses/Problem410' 1534description : 'Summary never prepares a request. Section requires snapshot_id, section_id, page and 1535forbids request-pagination fields. Requests accepts after/limit/next. Stale snapshot is 410 context_changed, 1536never another section. Requires capability `context: 1`.' 1537parameters : 1538- name : session_id 1539in : path 1540required : true 1541schema : 1542$ref : '#/components/schemas/ID' 1543- name : view 1544in : query 1545required : false 1546schema : 1547type : string 1548enum : [ summary , section , requests ] 1549default : summary 1550- name : snapshot_id 1551in : query 1552required : false 1553schema : 1554$ref : '#/components/schemas/ID' 1555- name : section_id 1556in : query 1557required : false 1558schema : 1559$ref : '#/components/schemas/ID' 1560- name : page 1561in : query 1562required : false 1563schema : 1564$ref : '#/components/schemas/Counter' 1565- name : after 1566in : query 1567required : false 1568schema : 1569$ref : '#/components/schemas/Counter' 1570- $ref : '#/components/parameters/Limit' 1571- $ref : '#/components/parameters/Next' 1572/sessions/{session_id}/catalog : 1573get : 1574operationId : getCatalog 1575summary : Discover candidates, loaded commands and pages 1576tags : 1577- sessions 1578responses : 1579'200' : 1580description : Successful result. 1581content : 1582application/json : 1583schema : 1584$ref : '#/components/schemas/Catalog' 1585'400' : 1586$ref : '#/components/responses/Problem400' 1587'401' : 1588$ref : '#/components/responses/Problem401' 1589'403' : 1590$ref : '#/components/responses/Problem403' 1591'405' : 1592$ref : '#/components/responses/Problem405' 1593'406' : 1594$ref : '#/components/responses/Problem406' 1595'503' : 1596$ref : '#/components/responses/Problem503' 1597'404' : 1598$ref : '#/components/responses/Problem404' 1599description : 'Discovery and loaded composition are separate. Reads do not reload. Continuation identifies 1600its section; candidate revision guards discovery-based selection. Requires capability `catalog: 16011`.' 1602parameters : 1603- name : session_id 1604in : path 1605required : true 1606schema : 1607$ref : '#/components/schemas/ID' 1608- name : kind 1609in : query 1610required : false 1611schema : 1612type : string 1613enum : [ extensions , skills , instructions , mcp , commands ] 1614- $ref : '#/components/parameters/Limit' 1615- $ref : '#/components/parameters/Next' 1616/sessions/{session_id}/reload : 1617post : 1618operationId : reloadSession 1619summary : Reload composition, models or both 1620tags : 1621- sessions 1622responses : 1623'200' : 1624description : Successful result. 1625content : 1626application/json : 1627schema : 1628$ref : '#/components/schemas/ReloadResult' 1629'400' : 1630$ref : '#/components/responses/Problem400' 1631'401' : 1632$ref : '#/components/responses/Problem401' 1633'403' : 1634$ref : '#/components/responses/Problem403' 1635'405' : 1636$ref : '#/components/responses/Problem405' 1637'406' : 1638$ref : '#/components/responses/Problem406' 1639'503' : 1640$ref : '#/components/responses/Problem503' 1641'413' : 1642$ref : '#/components/responses/Problem413' 1643'415' : 1644$ref : '#/components/responses/Problem415' 1645'404' : 1646$ref : '#/components/responses/Problem404' 1647'409' : 1648$ref : '#/components/responses/Problem409' 1649description : Session reload requires idle. Both targets return separate outcomes, preserving confirmed 1650success when the other fails. Lost-response replay is not automatic. 1651parameters : 1652- name : session_id 1653in : path 1654required : true 1655schema : 1656$ref : '#/components/schemas/ID' 1657requestBody : 1658required : true 1659content : 1660application/json : 1661schema : 1662$ref : '#/components/schemas/ReloadRequest' 1663description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1664/sessions/{session_id}/kernel/upgrade : 1665post : 1666operationId : upgradeKernel 1667summary : Explicitly upgrade an idle kernel 1668tags : 1669- sessions 1670responses : 1671'200' : 1672description : Successful result. 1673content : 1674application/json : 1675schema : 1676$ref : '#/components/schemas/KernelUpgradeResult' 1677'400' : 1678$ref : '#/components/responses/Problem400' 1679'401' : 1680$ref : '#/components/responses/Problem401' 1681'403' : 1682$ref : '#/components/responses/Problem403' 1683'405' : 1684$ref : '#/components/responses/Problem405' 1685'406' : 1686$ref : '#/components/responses/Problem406' 1687'503' : 1688$ref : '#/components/responses/Problem503' 1689'413' : 1690$ref : '#/components/responses/Problem413' 1691'415' : 1692$ref : '#/components/responses/Problem415' 1693'404' : 1694$ref : '#/components/responses/Problem404' 1695'409' : 1696$ref : '#/components/responses/Problem409' 1697description : Stage and validate before swap. Report external jobs stopped during an unsuccessful 1698upgrade; do not claim them restored. No automatic retry. 1699parameters : 1700- name : session_id 1701in : path 1702required : true 1703schema : 1704$ref : '#/components/schemas/ID' 1705requestBody : 1706required : true 1707content : 1708application/json : 1709schema : 1710$ref : '#/components/schemas/EmptyRequest' 1711description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1712/sessions/{session_id}/compaction : 1713post : 1714operationId : compactSession 1715summary : Compact model context while retaining history 1716tags : 1717- sessions 1718responses : 1719'200' : 1720description : Successful result. 1721content : 1722application/json : 1723schema : 1724$ref : '#/components/schemas/CompactionResult' 1725'400' : 1726$ref : '#/components/responses/Problem400' 1727'401' : 1728$ref : '#/components/responses/Problem401' 1729'403' : 1730$ref : '#/components/responses/Problem403' 1731'405' : 1732$ref : '#/components/responses/Problem405' 1733'406' : 1734$ref : '#/components/responses/Problem406' 1735'503' : 1736$ref : '#/components/responses/Problem503' 1737'413' : 1738$ref : '#/components/responses/Problem413' 1739'415' : 1740$ref : '#/components/responses/Problem415' 1741'404' : 1742$ref : '#/components/responses/Problem404' 1743'409' : 1744$ref : '#/components/responses/Problem409' 1745description : Idle required. Selecting a strategy can succeed even if compaction later fails; report 1746both. Full durable history stays intact. No automatic retry. 1747parameters : 1748- name : session_id 1749in : path 1750required : true 1751schema : 1752$ref : '#/components/schemas/ID' 1753requestBody : 1754required : true 1755content : 1756application/json : 1757schema : 1758$ref : '#/components/schemas/CompactionRequest' 1759description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1760/models : 1761get : 1762operationId : listModels 1763summary : Read provider model metadata 1764tags : 1765- models 1766responses : 1767'200' : 1768description : Successful result. 1769content : 1770application/json : 1771schema : 1772$ref : '#/components/schemas/ModelRead' 1773'400' : 1774$ref : '#/components/responses/Problem400' 1775'401' : 1776$ref : '#/components/responses/Problem401' 1777'403' : 1778$ref : '#/components/responses/Problem403' 1779'405' : 1780$ref : '#/components/responses/Problem405' 1781'406' : 1782$ref : '#/components/responses/Problem406' 1783'503' : 1784$ref : '#/components/responses/Problem503' 1785description : In catalogue view, exactly one of provider_profile/provider is required. Endpoint is allowed only with 1786provider. Unknown facts are null. A manual unlisted ID remains usable. Optional model returns 1787one metadata row, including cap_key, for an unlisted manual ID; unknown facts stay null. 1788parameters : 1789- name : view 1790in : query 1791required : false 1792schema : 1793type : string 1794enum : [ catalogue , cache-policy ] 1795default : catalogue 1796- name : extension 1797in : query 1798required : false 1799description : Cache-policy matching only; defaults to the empty selector. 1800schema : 1801type : string 1802maxLength : 256 1803- name : host 1804in : query 1805required : false 1806description : Cache-policy matching only; defaults to the empty selector. 1807schema : 1808type : string 1809maxLength : 4096 1810- name : model 1811in : query 1812required : false 1813schema : 1814$ref : '#/components/schemas/ID' 1815- name : provider_profile 1816in : query 1817required : false 1818schema : 1819$ref : '#/components/schemas/ID' 1820- name : provider 1821in : query 1822required : false 1823schema : 1824$ref : '#/components/schemas/ID' 1825- name : endpoint 1826in : query 1827required : false 1828schema : 1829type : string 1830format : uri 1831maxLength : 4096 1832- $ref : '#/components/parameters/Limit' 1833- $ref : '#/components/parameters/Next' 1834/workspaces : 1835get : 1836operationId : getWorkspaces 1837summary : Browse recent locations or a directory 1838tags : 1839- workspaces 1840responses : 1841'200' : 1842description : Successful result. 1843content : 1844application/json : 1845schema : 1846$ref : '#/components/schemas/WorkspaceRead' 1847'400' : 1848$ref : '#/components/responses/Problem400' 1849'401' : 1850$ref : '#/components/responses/Problem401' 1851'403' : 1852$ref : '#/components/responses/Problem403' 1853'405' : 1854$ref : '#/components/responses/Problem405' 1855'406' : 1856$ref : '#/components/responses/Problem406' 1857'503' : 1858$ref : '#/components/responses/Problem503' 1859'404' : 1860$ref : '#/components/responses/Problem404' 1861'409' : 1862$ref : '#/components/responses/Problem409' 1863description : 'Without location return recent workspaces. include=preview requires location. Paths 1864resolve on the daemon host; cached host state does not perform SSH sign-in. Requires capability 1865`workspace_browsing: 1`.' 1866parameters : 1867- name : location 1868in : query 1869required : false 1870schema : 1871$ref : '#/components/schemas/Workspace' 1872- name : include 1873in : query 1874required : false 1875schema : 1876type : string 1877enum : [ preview ] 1878- $ref : '#/components/parameters/Limit' 1879- $ref : '#/components/parameters/Next' 1880/hosts : 1881get : 1882operationId : listHosts 1883summary : Read known SSH hosts and cached state 1884tags : 1885- hosts 1886responses : 1887'200' : 1888description : Successful result. 1889content : 1890application/json : 1891schema : 1892$ref : '#/components/schemas/HostPage' 1893'400' : 1894$ref : '#/components/responses/Problem400' 1895'401' : 1896$ref : '#/components/responses/Problem401' 1897'403' : 1898$ref : '#/components/responses/Problem403' 1899'405' : 1900$ref : '#/components/responses/Problem405' 1901'406' : 1902$ref : '#/components/responses/Problem406' 1903'503' : 1904$ref : '#/components/responses/Problem503' 1905parameters : 1906- name : target 1907in : query 1908required : false 1909schema : 1910$ref : '#/components/schemas/ID' 1911- $ref : '#/components/parameters/Limit' 1912- $ref : '#/components/parameters/Next' 1913description : 'Requires capability `host_probes: 1`.' 1914/hosts/{host}/probe : 1915post : 1916operationId : probeHost 1917summary : Start or join a host probe 1918tags : 1919- hosts 1920responses : 1921'202' : 1922description : Successful result. 1923content : 1924application/json : 1925schema : 1926$ref : '#/components/schemas/Host' 1927'400' : 1928$ref : '#/components/responses/Problem400' 1929'401' : 1930$ref : '#/components/responses/Problem401' 1931'403' : 1932$ref : '#/components/responses/Problem403' 1933'405' : 1934$ref : '#/components/responses/Problem405' 1935'406' : 1936$ref : '#/components/responses/Problem406' 1937'503' : 1938$ref : '#/components/responses/Problem503' 1939'413' : 1940$ref : '#/components/responses/Problem413' 1941'415' : 1942$ref : '#/components/responses/Problem415' 1943description : 'Coalesce repeated probes. Authentication remains an explicit operator handoff; no 1944background SSH sign-in. Requires capability `host_probes: 1`.' 1945parameters : 1946- name : host 1947in : path 1948required : true 1949schema : 1950$ref : '#/components/schemas/ID' 1951requestBody : 1952required : true 1953content : 1954application/json : 1955schema : 1956$ref : '#/components/schemas/EmptyRequest' 1957description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 1958/auth : 1959get : 1960operationId : getAuth 1961summary : Read login choices and redacted accounts 1962tags : 1963- auth 1964responses : 1965'200' : 1966description : Successful result. 1967content : 1968application/json : 1969schema : 1970$ref : '#/components/schemas/Auth' 1971'400' : 1972$ref : '#/components/responses/Problem400' 1973'401' : 1974$ref : '#/components/responses/Problem401' 1975'403' : 1976$ref : '#/components/responses/Problem403' 1977'405' : 1978$ref : '#/components/responses/Problem405' 1979'406' : 1980$ref : '#/components/responses/Problem406' 1981'503' : 1982$ref : '#/components/responses/Problem503' 1983description : 'Requires capability `provider_auth: 1`.' 1984/auth/logins/{login_id} : 1985put : 1986operationId : createLogin 1987summary : Start or recover an identified provider login 1988tags : 1989- auth 1990responses : 1991'201' : 1992description : Successful result. 1993headers : 1994Location : 1995$ref : '#/components/headers/Location' 1996ETag : 1997$ref : '#/components/headers/ETag' 1998content : 1999application/json : 2000schema : 2001$ref : '#/components/schemas/Login' 2002examples : 2003Login : 2004value : 2005id : 01a0fcea-2b00-7000-8000-000000000003 2006provider : example-provider 2007url : https://provider.example/authorize?state=synthetic-state 2008expires_at : '2026-10-02T14:15:00Z' 2009state : waiting 2010instructions : Paste the callback URL if the browser cannot reach the daemon. 2011progress : Waiting for authorization. 2012accounts : [] 2013failure : null 2014'400' : 2015$ref : '#/components/responses/Problem400' 2016'401' : 2017$ref : '#/components/responses/Problem401' 2018'403' : 2019$ref : '#/components/responses/Problem403' 2020'405' : 2021$ref : '#/components/responses/Problem405' 2022'406' : 2023$ref : '#/components/responses/Problem406' 2024'503' : 2025$ref : '#/components/responses/Problem503' 2026'413' : 2027$ref : '#/components/responses/Problem413' 2028'415' : 2029$ref : '#/components/responses/Problem415' 2030'409' : 2031$ref : '#/components/responses/Problem409' 2032'410' : 2033$ref : '#/components/responses/Problem410' 2034'429' : 2035$ref : '#/components/responses/Problem429' 2036'200' : 2037description : Existing identified flow. 2038headers : 2039ETag : 2040$ref : '#/components/headers/ETag' 2041content : 2042application/json : 2043schema : 2044$ref : '#/components/schemas/Login' 2045description : 'UUIDv7 identity. Compare immutable private intent inside the daemon. Duplicate returns 2046existing flow, never another browser/exchange. Restart turns unfinished flows into retained daemon_restarted 2047failures; a new flow needs a new ID. Requires capability `provider_auth: 1`.' 2048parameters : 2049- name : login_id 2050in : path 2051required : true 2052schema : 2053$ref : '#/components/schemas/UUIDv7' 2054requestBody : 2055required : true 2056content : 2057application/json : 2058schema : 2059$ref : '#/components/schemas/LoginRequest' 2060description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2061get : 2062operationId : getLogin 2063summary : Inspect a provider login 2064tags : 2065- auth 2066responses : 2067'200' : 2068description : Successful result. 2069headers : 2070ETag : 2071$ref : '#/components/headers/ETag' 2072content : 2073application/json : 2074schema : 2075$ref : '#/components/schemas/Login' 2076'400' : 2077$ref : '#/components/responses/Problem400' 2078'401' : 2079$ref : '#/components/responses/Problem401' 2080'403' : 2081$ref : '#/components/responses/Problem403' 2082'405' : 2083$ref : '#/components/responses/Problem405' 2084'406' : 2085$ref : '#/components/responses/Problem406' 2086'503' : 2087$ref : '#/components/responses/Problem503' 2088'404' : 2089$ref : '#/components/responses/Problem404' 2090'410' : 2091$ref : '#/components/responses/Problem410' 2092description : 'No credential or submitted form echo. Terminal records remain fifteen minutes; unfinished 2093flows expire at their provider deadline. Requires capability `provider_auth: 1`.' 2094parameters : 2095- name : login_id 2096in : path 2097required : true 2098schema : 2099$ref : '#/components/schemas/ID' 2100patch : 2101operationId : answerLogin 2102summary : Supply manual callback or code 2103tags : 2104- auth 2105responses : 2106'200' : 2107description : Successful result. 2108headers : 2109ETag : 2110$ref : '#/components/headers/ETag' 2111content : 2112application/json : 2113schema : 2114$ref : '#/components/schemas/Login' 2115'400' : 2116$ref : '#/components/responses/Problem400' 2117'401' : 2118$ref : '#/components/responses/Problem401' 2119'403' : 2120$ref : '#/components/responses/Problem403' 2121'405' : 2122$ref : '#/components/responses/Problem405' 2123'406' : 2124$ref : '#/components/responses/Problem406' 2125'503' : 2126$ref : '#/components/responses/Problem503' 2127'413' : 2128$ref : '#/components/responses/Problem413' 2129'415' : 2130$ref : '#/components/responses/Problem415' 2131'404' : 2132$ref : '#/components/responses/Problem404' 2133'409' : 2134$ref : '#/components/responses/Problem409' 2135'410' : 2136$ref : '#/components/responses/Problem410' 2137'412' : 2138$ref : '#/components/responses/Problem412' 2139'428' : 2140$ref : '#/components/responses/Problem428' 2141parameters : 2142- name : login_id 2143in : path 2144required : true 2145schema : 2146$ref : '#/components/schemas/ID' 2147- $ref : '#/components/parameters/IfMatch' 2148requestBody : 2149required : true 2150content : 2151application/merge-patch+json : 2152schema : 2153$ref : '#/components/schemas/LoginPatch' 2154description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2155description : 'Requires capability `provider_auth: 1`.' 2156delete : 2157operationId : cancelLogin 2158summary : Cancel a login idempotently 2159tags : 2160- auth 2161responses : 2162'204' : 2163description : Successful result. 2164'400' : 2165$ref : '#/components/responses/Problem400' 2166'401' : 2167$ref : '#/components/responses/Problem401' 2168'403' : 2169$ref : '#/components/responses/Problem403' 2170'405' : 2171$ref : '#/components/responses/Problem405' 2172'406' : 2173$ref : '#/components/responses/Problem406' 2174'503' : 2175$ref : '#/components/responses/Problem503' 2176'413' : 2177$ref : '#/components/responses/Problem413' 2178'415' : 2179$ref : '#/components/responses/Problem415' 2180'404' : 2181$ref : '#/components/responses/Problem404' 2182'410' : 2183$ref : '#/components/responses/Problem410' 2184description : 'Cancellation stops only this flow; completed accounts remain saved. No If-Match is 2185needed for identity-scoped cancellation. Requires capability `provider_auth: 1`.' 2186parameters : 2187- name : login_id 2188in : path 2189required : true 2190schema : 2191$ref : '#/components/schemas/ID' 2192/auth/accounts/{account_id} : 2193delete : 2194operationId : deleteAccount 2195summary : Remove an unreferenced provider account 2196tags : 2197- auth 2198responses : 2199'204' : 2200description : Successful result. 2201'400' : 2202$ref : '#/components/responses/Problem400' 2203'401' : 2204$ref : '#/components/responses/Problem401' 2205'403' : 2206$ref : '#/components/responses/Problem403' 2207'405' : 2208$ref : '#/components/responses/Problem405' 2209'406' : 2210$ref : '#/components/responses/Problem406' 2211'503' : 2212$ref : '#/components/responses/Problem503' 2213'413' : 2214$ref : '#/components/responses/Problem413' 2215'415' : 2216$ref : '#/components/responses/Problem415' 2217'404' : 2218$ref : '#/components/responses/Problem404' 2219'409' : 2220$ref : '#/components/responses/Problem409' 2221description : 'Reject if a saved provider profile references it. Does not interrupt captured credentials 2222in an active request. Account IDs are never reused. Requires capability `provider_auth: 1`.' 2223parameters : 2224- name : account_id 2225in : path 2226required : true 2227schema : 2228$ref : '#/components/schemas/ID' 2229/extensions/work/items : 2230get : 2231operationId : listWork 2232summary : List work resources 2233tags : 2234- work 2235responses : 2236'200' : 2237description : Successful result. 2238content : 2239application/json : 2240schema : 2241$ref : '#/components/schemas/WorkPage' 2242'400' : 2243$ref : '#/components/responses/Problem400' 2244'401' : 2245$ref : '#/components/responses/Problem401' 2246'403' : 2247$ref : '#/components/responses/Problem403' 2248'405' : 2249$ref : '#/components/responses/Problem405' 2250'406' : 2251$ref : '#/components/responses/Problem406' 2252'503' : 2253$ref : '#/components/responses/Problem503' 2254description : Requires enabled extension work. Lists may include bounded page descriptors and glances. 2255parameters : 2256- name : workspace 2257in : query 2258required : true 2259schema : 2260$ref : '#/components/schemas/Workspace' 2261- $ref : '#/components/parameters/Limit' 2262- $ref : '#/components/parameters/Next' 2263post : 2264operationId : createWork 2265summary : Create a work resource 2266tags : 2267- work 2268responses : 2269'201' : 2270description : Successful result. 2271headers : 2272Location : 2273$ref : '#/components/headers/Location' 2274content : 2275application/json : 2276schema : 2277$ref : '#/components/schemas/WorkChange' 2278examples : 2279WorkChange : 2280value : 2281resource : 2282url : /extensions/work/items/work-1?workspace=%2Fworkspace%2Fproject 2283etag : '"work-revision-1"' 2284value : 2285id : work-1 2286workspace : /workspace/project 2287title : Fix the parser 2288notes : '' 2289parent_id : null 2290session_id : null 2291run_id : null 2292status : open 2293revision : work-revision-1 2294created_at : '2026-10-02T14:00:00Z' 2295updated_at : '2026-10-02T14:00:00Z' 2296notification : 2297state : not_requested 2298code : null 2299detail : null 2300'400' : 2301$ref : '#/components/responses/Problem400' 2302'401' : 2303$ref : '#/components/responses/Problem401' 2304'403' : 2305$ref : '#/components/responses/Problem403' 2306'405' : 2307$ref : '#/components/responses/Problem405' 2308'406' : 2309$ref : '#/components/responses/Problem406' 2310'503' : 2311$ref : '#/components/responses/Problem503' 2312'413' : 2313$ref : '#/components/responses/Problem413' 2314'415' : 2315$ref : '#/components/responses/Problem415' 2316'404' : 2317$ref : '#/components/responses/Problem404' 2318'409' : 2319$ref : '#/components/responses/Problem409' 2320description : No automatic lost-response retry. Notification outcome does not undo a committed domain 2321edit. 2322parameters : 2323- name : workspace 2324in : query 2325required : true 2326schema : 2327$ref : '#/components/schemas/Workspace' 2328requestBody : 2329required : true 2330content : 2331application/json : 2332schema : 2333$ref : '#/components/schemas/WorkCreate' 2334examples : 2335WorkCreate : 2336value : 2337title : Fix the parser 2338description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2339/extensions/work/items/{item_id} : 2340get : 2341operationId : getWork 2342summary : Read one work resource 2343tags : 2344- work 2345responses : 2346'200' : 2347description : Successful result. 2348headers : 2349ETag : 2350$ref : '#/components/headers/ETag' 2351content : 2352application/json : 2353schema : 2354$ref : '#/components/schemas/WorkItem' 2355'400' : 2356$ref : '#/components/responses/Problem400' 2357'401' : 2358$ref : '#/components/responses/Problem401' 2359'403' : 2360$ref : '#/components/responses/Problem403' 2361'405' : 2362$ref : '#/components/responses/Problem405' 2363'406' : 2364$ref : '#/components/responses/Problem406' 2365'503' : 2366$ref : '#/components/responses/Problem503' 2367'404' : 2368$ref : '#/components/responses/Problem404' 2369parameters : 2370- name : item_id 2371in : path 2372required : true 2373schema : 2374$ref : '#/components/schemas/ID' 2375- name : workspace 2376in : query 2377required : true 2378schema : 2379$ref : '#/components/schemas/Workspace' 2380patch : 2381operationId : patchWork 2382summary : Edit a work resource 2383tags : 2384- work 2385responses : 2386'200' : 2387description : Successful result. 2388content : 2389application/json : 2390schema : 2391$ref : '#/components/schemas/WorkChange' 2392'400' : 2393$ref : '#/components/responses/Problem400' 2394'401' : 2395$ref : '#/components/responses/Problem401' 2396'403' : 2397$ref : '#/components/responses/Problem403' 2398'405' : 2399$ref : '#/components/responses/Problem405' 2400'406' : 2401$ref : '#/components/responses/Problem406' 2402'503' : 2403$ref : '#/components/responses/Problem503' 2404'413' : 2405$ref : '#/components/responses/Problem413' 2406'415' : 2407$ref : '#/components/responses/Problem415' 2408'404' : 2409$ref : '#/components/responses/Problem404' 2410'409' : 2411$ref : '#/components/responses/Problem409' 2412'412' : 2413$ref : '#/components/responses/Problem412' 2414'428' : 2415$ref : '#/components/responses/Problem428' 2416description : Use the displayed item validator. Reject readonly/unknown fields. No automatic lost-response 2417retry. 2418parameters : 2419- name : item_id 2420in : path 2421required : true 2422schema : 2423$ref : '#/components/schemas/ID' 2424- name : workspace 2425in : query 2426required : true 2427schema : 2428$ref : '#/components/schemas/Workspace' 2429- $ref : '#/components/parameters/IfMatch' 2430requestBody : 2431required : true 2432content : 2433application/merge-patch+json : 2434schema : 2435$ref : '#/components/schemas/WorkPatch' 2436description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2437delete : 2438operationId : deleteWork 2439summary : Delete a work resource 2440tags : 2441- work 2442responses : 2443'200' : 2444description : Successful result. 2445content : 2446application/json : 2447schema : 2448$ref : '#/components/schemas/ExtensionDeletion' 2449'400' : 2450$ref : '#/components/responses/Problem400' 2451'401' : 2452$ref : '#/components/responses/Problem401' 2453'403' : 2454$ref : '#/components/responses/Problem403' 2455'405' : 2456$ref : '#/components/responses/Problem405' 2457'406' : 2458$ref : '#/components/responses/Problem406' 2459'503' : 2460$ref : '#/components/responses/Problem503' 2461'413' : 2462$ref : '#/components/responses/Problem413' 2463'415' : 2464$ref : '#/components/responses/Problem415' 2465'404' : 2466$ref : '#/components/responses/Problem404' 2467'409' : 2468$ref : '#/components/responses/Problem409' 2469'412' : 2470$ref : '#/components/responses/Problem412' 2471'428' : 2472$ref : '#/components/responses/Problem428' 2473description : Committed deletion remains successful if notification fails. Work items with children 2474cannot be deleted. 2475parameters : 2476- name : item_id 2477in : path 2478required : true 2479schema : 2480$ref : '#/components/schemas/ID' 2481- name : workspace 2482in : query 2483required : true 2484schema : 2485$ref : '#/components/schemas/Workspace' 2486- name : notify_session_id 2487in : query 2488required : false 2489schema : 2490$ref : '#/components/schemas/ID' 2491description : Queue the deletion note for this session after the durable edit. 2492- $ref : '#/components/parameters/IfMatch' 2493/extensions/paperclips/items : 2494get : 2495operationId : listPaperclips 2496summary : List paperclips resources 2497tags : 2498- paperclips 2499responses : 2500'200' : 2501description : Successful result. 2502content : 2503application/json : 2504schema : 2505$ref : '#/components/schemas/PaperclipPage' 2506'400' : 2507$ref : '#/components/responses/Problem400' 2508'401' : 2509$ref : '#/components/responses/Problem401' 2510'403' : 2511$ref : '#/components/responses/Problem403' 2512'405' : 2513$ref : '#/components/responses/Problem405' 2514'406' : 2515$ref : '#/components/responses/Problem406' 2516'503' : 2517$ref : '#/components/responses/Problem503' 2518description : Requires enabled extension paperclips. Lists may include bounded page descriptors and 2519glances. 2520parameters : 2521- $ref : '#/components/parameters/Limit' 2522- $ref : '#/components/parameters/Next' 2523post : 2524operationId : createPaperclips 2525summary : Create a paperclips resource 2526tags : 2527- paperclips 2528responses : 2529'201' : 2530description : Successful result. 2531headers : 2532Location : 2533$ref : '#/components/headers/Location' 2534content : 2535application/json : 2536schema : 2537$ref : '#/components/schemas/PaperclipChange' 2538'400' : 2539$ref : '#/components/responses/Problem400' 2540'401' : 2541$ref : '#/components/responses/Problem401' 2542'403' : 2543$ref : '#/components/responses/Problem403' 2544'405' : 2545$ref : '#/components/responses/Problem405' 2546'406' : 2547$ref : '#/components/responses/Problem406' 2548'503' : 2549$ref : '#/components/responses/Problem503' 2550'413' : 2551$ref : '#/components/responses/Problem413' 2552'415' : 2553$ref : '#/components/responses/Problem415' 2554'404' : 2555$ref : '#/components/responses/Problem404' 2556'409' : 2557$ref : '#/components/responses/Problem409' 2558description : No automatic lost-response retry. Notification outcome does not undo a committed domain 2559edit. 2560requestBody : 2561required : true 2562content : 2563application/json : 2564schema : 2565$ref : '#/components/schemas/PaperclipCreate' 2566description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2567/extensions/paperclips/items/{item_id} : 2568get : 2569operationId : getPaperclips 2570summary : Read one paperclips resource 2571tags : 2572- paperclips 2573responses : 2574'200' : 2575description : Successful result. 2576headers : 2577ETag : 2578$ref : '#/components/headers/ETag' 2579content : 2580application/json : 2581schema : 2582$ref : '#/components/schemas/Paperclip' 2583'400' : 2584$ref : '#/components/responses/Problem400' 2585'401' : 2586$ref : '#/components/responses/Problem401' 2587'403' : 2588$ref : '#/components/responses/Problem403' 2589'405' : 2590$ref : '#/components/responses/Problem405' 2591'406' : 2592$ref : '#/components/responses/Problem406' 2593'503' : 2594$ref : '#/components/responses/Problem503' 2595'404' : 2596$ref : '#/components/responses/Problem404' 2597parameters : 2598- name : item_id 2599in : path 2600required : true 2601schema : 2602$ref : '#/components/schemas/ID' 2603patch : 2604operationId : patchPaperclips 2605summary : Edit a paperclips resource 2606tags : 2607- paperclips 2608responses : 2609'200' : 2610description : Successful result. 2611content : 2612application/json : 2613schema : 2614$ref : '#/components/schemas/PaperclipChange' 2615'400' : 2616$ref : '#/components/responses/Problem400' 2617'401' : 2618$ref : '#/components/responses/Problem401' 2619'403' : 2620$ref : '#/components/responses/Problem403' 2621'405' : 2622$ref : '#/components/responses/Problem405' 2623'406' : 2624$ref : '#/components/responses/Problem406' 2625'503' : 2626$ref : '#/components/responses/Problem503' 2627'413' : 2628$ref : '#/components/responses/Problem413' 2629'415' : 2630$ref : '#/components/responses/Problem415' 2631'404' : 2632$ref : '#/components/responses/Problem404' 2633'409' : 2634$ref : '#/components/responses/Problem409' 2635'412' : 2636$ref : '#/components/responses/Problem412' 2637'428' : 2638$ref : '#/components/responses/Problem428' 2639description : Use the displayed item validator. Reject readonly/unknown fields. No automatic lost-response 2640retry. 2641parameters : 2642- name : item_id 2643in : path 2644required : true 2645schema : 2646$ref : '#/components/schemas/ID' 2647- $ref : '#/components/parameters/IfMatch' 2648requestBody : 2649required : true 2650content : 2651application/merge-patch+json : 2652schema : 2653$ref : '#/components/schemas/PaperclipPatch' 2654description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2655delete : 2656operationId : deletePaperclips 2657summary : Delete a paperclips resource 2658tags : 2659- paperclips 2660responses : 2661'200' : 2662description : Successful result. 2663content : 2664application/json : 2665schema : 2666$ref : '#/components/schemas/ExtensionDeletion' 2667'400' : 2668$ref : '#/components/responses/Problem400' 2669'401' : 2670$ref : '#/components/responses/Problem401' 2671'403' : 2672$ref : '#/components/responses/Problem403' 2673'405' : 2674$ref : '#/components/responses/Problem405' 2675'406' : 2676$ref : '#/components/responses/Problem406' 2677'503' : 2678$ref : '#/components/responses/Problem503' 2679'413' : 2680$ref : '#/components/responses/Problem413' 2681'415' : 2682$ref : '#/components/responses/Problem415' 2683'404' : 2684$ref : '#/components/responses/Problem404' 2685'409' : 2686$ref : '#/components/responses/Problem409' 2687'412' : 2688$ref : '#/components/responses/Problem412' 2689'428' : 2690$ref : '#/components/responses/Problem428' 2691description : Committed deletion remains successful if notification fails. Work items with children 2692cannot be deleted. 2693parameters : 2694- name : item_id 2695in : path 2696required : true 2697schema : 2698$ref : '#/components/schemas/ID' 2699- $ref : '#/components/parameters/IfMatch' 2700/extensions/web-search/providers : 2701get : 2702operationId : listWebSearchProviders 2703summary : List web search providers in the order a search tries them 2704tags : 2705- web-search 2706responses : 2707'200' : 2708description : Successful result. 2709content : 2710application/json : 2711schema : 2712$ref : '#/components/schemas/WebSearchProviderPage' 2713'401' : 2714$ref : '#/components/responses/Problem401' 2715'403' : 2716$ref : '#/components/responses/Problem403' 2717'405' : 2718$ref : '#/components/responses/Problem405' 2719'503' : 2720$ref : '#/components/responses/Problem503' 2721description : Requires enabled extension web-search. The global order lives in extensions.json. 2722/extensions/web-search/providers/{name} : 2723post : 2724operationId : changeWebSearchProvider 2725summary : Move a web search provider up or down, or turn it on or off 2726tags : 2727- web-search 2728responses : 2729'200' : 2730description : Successful result. 2731content : 2732application/json : 2733schema : 2734$ref : '#/components/schemas/WebSearchProviderChange' 2735'400' : 2736$ref : '#/components/responses/Problem400' 2737'401' : 2738$ref : '#/components/responses/Problem401' 2739'403' : 2740$ref : '#/components/responses/Problem403' 2741'404' : 2742$ref : '#/components/responses/Problem404' 2743'405' : 2744$ref : '#/components/responses/Problem405' 2745'413' : 2746$ref : '#/components/responses/Problem413' 2747'415' : 2748$ref : '#/components/responses/Problem415' 2749'503' : 2750$ref : '#/components/responses/Problem503' 2751description : A move past either end leaves the order as it was. 2752parameters : 2753- name : name 2754in : path 2755required : true 2756schema : 2757$ref : '#/components/schemas/ID' 2758requestBody : 2759required : true 2760content : 2761application/json : 2762schema : 2763$ref : '#/components/schemas/WebSearchProviderChangeRequest' 2764description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2765/extensions/schedule/jobs : 2766get : 2767operationId : listSchedule 2768summary : List schedule resources 2769tags : 2770- schedule 2771responses : 2772'200' : 2773description : Successful result. 2774content : 2775application/json : 2776schema : 2777$ref : '#/components/schemas/SchedulePage' 2778'400' : 2779$ref : '#/components/responses/Problem400' 2780'401' : 2781$ref : '#/components/responses/Problem401' 2782'403' : 2783$ref : '#/components/responses/Problem403' 2784'405' : 2785$ref : '#/components/responses/Problem405' 2786'406' : 2787$ref : '#/components/responses/Problem406' 2788'503' : 2789$ref : '#/components/responses/Problem503' 2790description : Requires enabled extension schedule. Lists may include bounded page descriptors and 2791glances. 2792parameters : 2793- name : session_id 2794in : query 2795required : true 2796schema : 2797$ref : '#/components/schemas/ID' 2798- $ref : '#/components/parameters/Limit' 2799- $ref : '#/components/parameters/Next' 2800post : 2801operationId : createSchedule 2802summary : Create a schedule resource 2803tags : 2804- schedule 2805responses : 2806'201' : 2807description : Successful result. 2808headers : 2809Location : 2810$ref : '#/components/headers/Location' 2811content : 2812application/json : 2813schema : 2814$ref : '#/components/schemas/ScheduleChange' 2815'400' : 2816$ref : '#/components/responses/Problem400' 2817'401' : 2818$ref : '#/components/responses/Problem401' 2819'403' : 2820$ref : '#/components/responses/Problem403' 2821'405' : 2822$ref : '#/components/responses/Problem405' 2823'406' : 2824$ref : '#/components/responses/Problem406' 2825'503' : 2826$ref : '#/components/responses/Problem503' 2827'413' : 2828$ref : '#/components/responses/Problem413' 2829'415' : 2830$ref : '#/components/responses/Problem415' 2831'404' : 2832$ref : '#/components/responses/Problem404' 2833'409' : 2834$ref : '#/components/responses/Problem409' 2835description : No automatic lost-response retry. Notification outcome does not undo a committed domain 2836edit. 2837requestBody : 2838required : true 2839content : 2840application/json : 2841schema : 2842$ref : '#/components/schemas/ScheduleCreate' 2843description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2844/extensions/schedule/jobs/{job_id} : 2845get : 2846operationId : getSchedule 2847summary : Read one schedule resource 2848tags : 2849- schedule 2850responses : 2851'200' : 2852description : Successful result. 2853headers : 2854ETag : 2855$ref : '#/components/headers/ETag' 2856content : 2857application/json : 2858schema : 2859$ref : '#/components/schemas/ScheduleJob' 2860'400' : 2861$ref : '#/components/responses/Problem400' 2862'401' : 2863$ref : '#/components/responses/Problem401' 2864'403' : 2865$ref : '#/components/responses/Problem403' 2866'405' : 2867$ref : '#/components/responses/Problem405' 2868'406' : 2869$ref : '#/components/responses/Problem406' 2870'503' : 2871$ref : '#/components/responses/Problem503' 2872'404' : 2873$ref : '#/components/responses/Problem404' 2874parameters : 2875- name : job_id 2876in : path 2877required : true 2878schema : 2879$ref : '#/components/schemas/ID' 2880patch : 2881operationId : patchSchedule 2882summary : Edit a schedule resource 2883tags : 2884- schedule 2885responses : 2886'200' : 2887description : Successful result. 2888content : 2889application/json : 2890schema : 2891$ref : '#/components/schemas/ScheduleChange' 2892'400' : 2893$ref : '#/components/responses/Problem400' 2894'401' : 2895$ref : '#/components/responses/Problem401' 2896'403' : 2897$ref : '#/components/responses/Problem403' 2898'405' : 2899$ref : '#/components/responses/Problem405' 2900'406' : 2901$ref : '#/components/responses/Problem406' 2902'503' : 2903$ref : '#/components/responses/Problem503' 2904'413' : 2905$ref : '#/components/responses/Problem413' 2906'415' : 2907$ref : '#/components/responses/Problem415' 2908'404' : 2909$ref : '#/components/responses/Problem404' 2910'409' : 2911$ref : '#/components/responses/Problem409' 2912'412' : 2913$ref : '#/components/responses/Problem412' 2914'428' : 2915$ref : '#/components/responses/Problem428' 2916description : Use the displayed item validator. Reject readonly/unknown fields. No automatic lost-response 2917retry. 2918parameters : 2919- name : job_id 2920in : path 2921required : true 2922schema : 2923$ref : '#/components/schemas/ID' 2924- $ref : '#/components/parameters/IfMatch' 2925requestBody : 2926required : true 2927content : 2928application/merge-patch+json : 2929schema : 2930$ref : '#/components/schemas/SchedulePatch' 2931description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 2932delete : 2933operationId : deleteSchedule 2934summary : Delete a schedule resource 2935tags : 2936- schedule 2937responses : 2938'200' : 2939description : Successful result. 2940content : 2941application/json : 2942schema : 2943$ref : '#/components/schemas/ExtensionDeletion' 2944'400' : 2945$ref : '#/components/responses/Problem400' 2946'401' : 2947$ref : '#/components/responses/Problem401' 2948'403' : 2949$ref : '#/components/responses/Problem403' 2950'405' : 2951$ref : '#/components/responses/Problem405' 2952'406' : 2953$ref : '#/components/responses/Problem406' 2954'503' : 2955$ref : '#/components/responses/Problem503' 2956'413' : 2957$ref : '#/components/responses/Problem413' 2958'415' : 2959$ref : '#/components/responses/Problem415' 2960'404' : 2961$ref : '#/components/responses/Problem404' 2962'409' : 2963$ref : '#/components/responses/Problem409' 2964'412' : 2965$ref : '#/components/responses/Problem412' 2966'428' : 2967$ref : '#/components/responses/Problem428' 2968description : Committed deletion remains successful if notification fails. Work items with children 2969cannot be deleted. 2970parameters : 2971- name : job_id 2972in : path 2973required : true 2974schema : 2975$ref : '#/components/schemas/ID' 2976- $ref : '#/components/parameters/IfMatch' 2977/extensions/links/groups : 2978get : 2979operationId : getLinkGroup 2980summary : Read linked membership and presence 2981tags : 2982- links 2983responses : 2984'200' : 2985description : Successful result. 2986headers : 2987ETag : 2988$ref : '#/components/headers/ETag' 2989content : 2990application/json : 2991schema : 2992oneOf : 2993- $ref : '#/components/schemas/LinkGroup' 2994- $ref : '#/components/schemas/LinkConfiguration' 2995'400' : 2996$ref : '#/components/responses/Problem400' 2997'401' : 2998$ref : '#/components/responses/Problem401' 2999'403' : 3000$ref : '#/components/responses/Problem403' 3001'405' : 3002$ref : '#/components/responses/Problem405' 3003'406' : 3004$ref : '#/components/responses/Problem406' 3005'503' : 3006$ref : '#/components/responses/Problem503' 3007description : Only configuration view has the canonical membership ETag. Presence does not change 3008that validator. 3009parameters : 3010- name : workspace 3011in : query 3012required : true 3013schema : 3014$ref : '#/components/schemas/Workspace' 3015- name : view 3016in : query 3017required : false 3018schema : 3019type : string 3020enum : [ configuration ] 3021- $ref : '#/components/parameters/Limit' 3022- $ref : '#/components/parameters/Next' 3023post : 3024operationId : mergeLinkGroups 3025summary : Merge two observed workspace groups 3026tags : 3027- links 3028responses : 3029'200' : 3030description : Successful result. 3031content : 3032application/json : 3033schema : 3034$ref : '#/components/schemas/LinkChange' 3035'400' : 3036$ref : '#/components/responses/Problem400' 3037'401' : 3038$ref : '#/components/responses/Problem401' 3039'403' : 3040$ref : '#/components/responses/Problem403' 3041'405' : 3042$ref : '#/components/responses/Problem405' 3043'406' : 3044$ref : '#/components/responses/Problem406' 3045'503' : 3046$ref : '#/components/responses/Problem503' 3047'413' : 3048$ref : '#/components/responses/Problem413' 3049'415' : 3050$ref : '#/components/responses/Problem415' 3051'409' : 3052$ref : '#/components/responses/Problem409' 3053'412' : 3054$ref : '#/components/responses/Problem412' 3055'428' : 3056$ref : '#/components/responses/Problem428' 3057description : Check both observed validators in one owner commit. Human-only; domain commit and notifications 3058are separate. No automatic lost-response retry. 3059parameters : 3060- name : workspace 3061in : query 3062required : true 3063schema : 3064$ref : '#/components/schemas/Workspace' 3065- name : view 3066in : query 3067required : true 3068schema : 3069const : configuration 3070- $ref : '#/components/parameters/IfMatch' 3071requestBody : 3072required : true 3073content : 3074application/json : 3075schema : 3076$ref : '#/components/schemas/LinkMerge' 3077description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 3078delete : 3079operationId : unlinkWorkspace 3080summary : Remove a member from the observed group 3081tags : 3082- links 3083responses : 3084'200' : 3085description : Successful result. 3086content : 3087application/json : 3088schema : 3089$ref : '#/components/schemas/LinkChange' 3090'400' : 3091$ref : '#/components/responses/Problem400' 3092'401' : 3093$ref : '#/components/responses/Problem401' 3094'403' : 3095$ref : '#/components/responses/Problem403' 3096'405' : 3097$ref : '#/components/responses/Problem405' 3098'406' : 3099$ref : '#/components/responses/Problem406' 3100'503' : 3101$ref : '#/components/responses/Problem503' 3102'413' : 3103$ref : '#/components/responses/Problem413' 3104'415' : 3105$ref : '#/components/responses/Problem415' 3106'404' : 3107$ref : '#/components/responses/Problem404' 3108'409' : 3109$ref : '#/components/responses/Problem409' 3110'412' : 3111$ref : '#/components/responses/Problem412' 3112'428' : 3113$ref : '#/components/responses/Problem428' 3114description : Check membership at commit. Creates a singleton group; deletes no work or memory. Human-only. 3115parameters : 3116- name : workspace 3117in : query 3118required : true 3119schema : 3120$ref : '#/components/schemas/Workspace' 3121- name : member 3122in : query 3123required : true 3124schema : 3125$ref : '#/components/schemas/Workspace' 3126- name : view 3127in : query 3128required : true 3129schema : 3130const : configuration 3131- $ref : '#/components/parameters/IfMatch' 3132/extensions/webhooks/hooks : 3133get : 3134operationId : listHooks 3135summary : List hooks without secrets 3136tags : 3137- webhooks 3138responses : 3139'200' : 3140description : Successful result. 3141content : 3142application/json : 3143schema : 3144$ref : '#/components/schemas/HookPage' 3145'400' : 3146$ref : '#/components/responses/Problem400' 3147'401' : 3148$ref : '#/components/responses/Problem401' 3149'403' : 3150$ref : '#/components/responses/Problem403' 3151'405' : 3152$ref : '#/components/responses/Problem405' 3153'406' : 3154$ref : '#/components/responses/Problem406' 3155'503' : 3156$ref : '#/components/responses/Problem503' 3157parameters : 3158- name : session_id 3159in : query 3160required : false 3161schema : 3162$ref : '#/components/schemas/ID' 3163- $ref : '#/components/parameters/Limit' 3164- $ref : '#/components/parameters/Next' 3165post : 3166operationId : createHook 3167summary : Create a hook and disclose its secret once 3168tags : 3169- webhooks 3170responses : 3171'201' : 3172description : Successful result. 3173headers : 3174Location : 3175$ref : '#/components/headers/Location' 3176content : 3177application/json : 3178schema : 3179$ref : '#/components/schemas/HookChange' 3180examples : 3181HookChange : 3182value : 3183resource : 3184url : /extensions/webhooks/hooks/hook-1?view=configuration 3185etag : '"hook-revision-1"' 3186value : 3187id : hook-1 3188name : ci 3189session_id : 01a0fcea-2b00-7000-8000-000000000001 3190enabled : true 3191signature_header : X-Albedo-Signature 3192signature_prefix : sha256= 3193revision : hook-revision-1 3194notification : 3195state : not_requested 3196code : null 3197detail : null 3198secret : synthetic-example-hook-secret 3199'400' : 3200$ref : '#/components/responses/Problem400' 3201'401' : 3202$ref : '#/components/responses/Problem401' 3203'403' : 3204$ref : '#/components/responses/Problem403' 3205'405' : 3206$ref : '#/components/responses/Problem405' 3207'406' : 3208$ref : '#/components/responses/Problem406' 3209'503' : 3210$ref : '#/components/responses/Problem503' 3211'413' : 3212$ref : '#/components/responses/Problem413' 3213'415' : 3214$ref : '#/components/responses/Problem415' 3215'404' : 3216$ref : '#/components/responses/Problem404' 3217'409' : 3218$ref : '#/components/responses/Problem409' 3219description : Default enabled=true, signature_header=X-Albedo-Signature and signature_prefix=sha256=. 3220Missing secret generates one. Lost secret requires explicit rotation; never retry creation automatically. 3221requestBody : 3222required : true 3223content : 3224application/json : 3225schema : 3226$ref : '#/components/schemas/HookCreate' 3227examples : 3228HookCreate : 3229value : 3230session_id : 01a0fcea-2b00-7000-8000-000000000001 3231name : ci 3232description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 3233/extensions/webhooks/hooks/{hook_id} : 3234get : 3235operationId : getHook 3236summary : Read hook state or canonical configuration 3237tags : 3238- webhooks 3239responses : 3240'200' : 3241description : Successful result. 3242headers : 3243ETag : 3244$ref : '#/components/headers/ETag' 3245content : 3246application/json : 3247schema : 3248oneOf : 3249- $ref : '#/components/schemas/Hook' 3250- $ref : '#/components/schemas/HookConfiguration' 3251'400' : 3252$ref : '#/components/responses/Problem400' 3253'401' : 3254$ref : '#/components/responses/Problem401' 3255'403' : 3256$ref : '#/components/responses/Problem403' 3257'405' : 3258$ref : '#/components/responses/Problem405' 3259'406' : 3260$ref : '#/components/responses/Problem406' 3261'503' : 3262$ref : '#/components/responses/Problem503' 3263'404' : 3264$ref : '#/components/responses/Problem404' 3265description : ETag is present only on configuration view. Ordinary read exposes the configuration 3266resource and validator plus runtime observations. 3267parameters : 3268- name : hook_id 3269in : path 3270required : true 3271schema : 3272$ref : '#/components/schemas/ID' 3273- name : view 3274in : query 3275required : false 3276schema : 3277type : string 3278enum : [ configuration ] 3279patch : 3280operationId : patchHook 3281summary : Edit the observed hook configuration 3282tags : 3283- webhooks 3284responses : 3285'200' : 3286description : Successful result. 3287content : 3288application/json : 3289schema : 3290$ref : '#/components/schemas/HookChange' 3291'400' : 3292$ref : '#/components/responses/Problem400' 3293'401' : 3294$ref : '#/components/responses/Problem401' 3295'403' : 3296$ref : '#/components/responses/Problem403' 3297'405' : 3298$ref : '#/components/responses/Problem405' 3299'406' : 3300$ref : '#/components/responses/Problem406' 3301'503' : 3302$ref : '#/components/responses/Problem503' 3303'413' : 3304$ref : '#/components/responses/Problem413' 3305'415' : 3306$ref : '#/components/responses/Problem415' 3307'404' : 3308$ref : '#/components/responses/Problem404' 3309'409' : 3310$ref : '#/components/responses/Problem409' 3311'412' : 3312$ref : '#/components/responses/Problem412' 3313'428' : 3314$ref : '#/components/responses/Problem428' 3315description : Target session and secret are not writable. Agent callers need that session permission; 3316HTTP bearer clients are operators. 3317parameters : 3318- name : hook_id 3319in : path 3320required : true 3321schema : 3322$ref : '#/components/schemas/ID' 3323- name : view 3324in : query 3325required : true 3326schema : 3327const : configuration 3328- $ref : '#/components/parameters/IfMatch' 3329requestBody : 3330required : true 3331content : 3332application/merge-patch+json : 3333schema : 3334$ref : '#/components/schemas/HookPatch' 3335description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 3336delete : 3337operationId : deleteHook 3338summary : Delete a hook while retaining accepted deliveries 3339tags : 3340- webhooks 3341responses : 3342'200' : 3343description : Successful result. 3344content : 3345application/json : 3346schema : 3347$ref : '#/components/schemas/ExtensionDeletion' 3348'400' : 3349$ref : '#/components/responses/Problem400' 3350'401' : 3351$ref : '#/components/responses/Problem401' 3352'403' : 3353$ref : '#/components/responses/Problem403' 3354'405' : 3355$ref : '#/components/responses/Problem405' 3356'406' : 3357$ref : '#/components/responses/Problem406' 3358'503' : 3359$ref : '#/components/responses/Problem503' 3360'413' : 3361$ref : '#/components/responses/Problem413' 3362'415' : 3363$ref : '#/components/responses/Problem415' 3364'404' : 3365$ref : '#/components/responses/Problem404' 3366'412' : 3367$ref : '#/components/responses/Problem412' 3368'428' : 3369$ref : '#/components/responses/Problem428' 3370parameters : 3371- name : hook_id 3372in : path 3373required : true 3374schema : 3375$ref : '#/components/schemas/ID' 3376- name : view 3377in : query 3378required : true 3379schema : 3380const : configuration 3381- $ref : '#/components/parameters/IfMatch' 3382/extensions/webhooks/hooks/{hook_id}/secret : 3383post : 3384operationId : rotateHookSecret 3385summary : Rotate and disclose the hook secret once 3386tags : 3387- webhooks 3388responses : 3389'200' : 3390description : Successful result. 3391content : 3392application/json : 3393schema : 3394$ref : '#/components/schemas/HookChange' 3395'400' : 3396$ref : '#/components/responses/Problem400' 3397'401' : 3398$ref : '#/components/responses/Problem401' 3399'403' : 3400$ref : '#/components/responses/Problem403' 3401'405' : 3402$ref : '#/components/responses/Problem405' 3403'406' : 3404$ref : '#/components/responses/Problem406' 3405'503' : 3406$ref : '#/components/responses/Problem503' 3407'413' : 3408$ref : '#/components/responses/Problem413' 3409'415' : 3410$ref : '#/components/responses/Problem415' 3411'404' : 3412$ref : '#/components/responses/Problem404' 3413'412' : 3414$ref : '#/components/responses/Problem412' 3415'428' : 3416$ref : '#/components/responses/Problem428' 3417description : If-Match is the observed hook configuration validator. Missing secret generates one. 3418No automatic retry after a lost response. 3419parameters : 3420- name : hook_id 3421in : path 3422required : true 3423schema : 3424$ref : '#/components/schemas/ID' 3425- $ref : '#/components/parameters/IfMatch' 3426requestBody : 3427required : true 3428content : 3429application/json : 3430schema : 3431$ref : '#/components/schemas/HookSecretRequest' 3432description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 3433/extensions/webhooks/hooks/{hook_id}/deliveries : 3434get : 3435operationId : listHookDeliveries 3436summary : Read accepted hook delivery metadata 3437tags : 3438- webhooks 3439responses : 3440'200' : 3441description : Successful result. 3442content : 3443application/json : 3444schema : 3445$ref : '#/components/schemas/DeliveryPage' 3446'400' : 3447$ref : '#/components/responses/Problem400' 3448'401' : 3449$ref : '#/components/responses/Problem401' 3450'403' : 3451$ref : '#/components/responses/Problem403' 3452'405' : 3453$ref : '#/components/responses/Problem405' 3454'406' : 3455$ref : '#/components/responses/Problem406' 3456'503' : 3457$ref : '#/components/responses/Problem503' 3458'404' : 3459$ref : '#/components/responses/Problem404' 3460description : Historical reads remain available after hook deletion while retained deliveries exist. 3461parameters : 3462- name : hook_id 3463in : path 3464required : true 3465schema : 3466$ref : '#/components/schemas/ID' 3467- name : state 3468in : query 3469required : false 3470schema : 3471type : string 3472enum : [ pending , delivered , all ] 3473default : all 3474- $ref : '#/components/parameters/Limit' 3475- $ref : '#/components/parameters/Next' 3476post : 3477operationId : deliverWebhook 3478summary : Accept signed external data durably 3479tags : 3480- webhooks 3481responses : 3482'202' : 3483description : Successful result. 3484content : 3485application/json : 3486schema : 3487type : object 3488properties : 3489delivery_id : 3490$ref : '#/components/schemas/ID' 3491required : [ delivery_id ] 3492additionalProperties : false 3493'400' : 3494$ref : '#/components/responses/Problem400' 3495'403' : 3496description : Missing or invalid hook signature. 3497content : 3498application/problem+json : 3499schema : 3500$ref : '#/components/schemas/Problem' 3501'405' : 3502$ref : '#/components/responses/Problem405' 3503'406' : 3504$ref : '#/components/responses/Problem406' 3505'503' : 3506$ref : '#/components/responses/Problem503' 3507'413' : 3508$ref : '#/components/responses/Problem413' 3509'415' : 3510$ref : '#/components/responses/Problem415' 3511'404' : 3512$ref : '#/components/responses/Problem404' 3513'409' : 3514$ref : '#/components/responses/Problem409' 3515'429' : 3516$ref : '#/components/responses/Problem429' 3517description : Authenticate configured HMAC-SHA256 over the exact raw body. A daemon bearer is not 3518a substitute. Signature header name and prefix come from hook configuration. Same event ID and 3519body returns original admission; changed body conflicts. Pending inbox limit 1000. Raw body maximum 352065536 bytes. 3521parameters : 3522- name : hook_id 3523in : path 3524required : true 3525schema : 3526$ref : '#/components/schemas/ID' 3527- name : X-Albedo-Event-Id 3528in : header 3529required : false 3530schema : 3531type : string 3532pattern : ^[^\r\n]+$ 3533maxLength : 128 3534description : Optional sender identity scoped to hook and exact body hash. 3535security : 3536- WebhookSignature : [] 3537requestBody : 3538required : true 3539content : 3540'*/*' : 3541schema : 3542type : string 3543format : binary 3544maxLength : 65536 3545description : Raw bytes, not a parsed JSON requirement. Verify signature before admission. 3546/extensions/webhooks/deliveries/{delivery_id} : 3547get : 3548operationId : getDelivery 3549summary : Read an accepted delivery payload 3550tags : 3551- webhooks 3552responses : 3553'200' : 3554description : Successful result. 3555content : 3556application/json : 3557schema : 3558$ref : '#/components/schemas/DeliveryDetail' 3559'400' : 3560$ref : '#/components/responses/Problem400' 3561'401' : 3562$ref : '#/components/responses/Problem401' 3563'403' : 3564$ref : '#/components/responses/Problem403' 3565'405' : 3566$ref : '#/components/responses/Problem405' 3567'406' : 3568$ref : '#/components/responses/Problem406' 3569'503' : 3570$ref : '#/components/responses/Problem503' 3571'404' : 3572$ref : '#/components/responses/Problem404' 3573parameters : 3574- name : delivery_id 3575in : path 3576required : true 3577schema : 3578$ref : '#/components/schemas/ID' 3579/extensions/webhooks/permissions/{session_id} : 3580get : 3581operationId : getHookPermission 3582summary : Read agent hook-management permission 3583tags : 3584- webhooks 3585responses : 3586'200' : 3587description : Successful result. 3588headers : 3589ETag : 3590$ref : '#/components/headers/ETag' 3591content : 3592application/json : 3593schema : 3594$ref : '#/components/schemas/HookPermission' 3595'400' : 3596$ref : '#/components/responses/Problem400' 3597'401' : 3598$ref : '#/components/responses/Problem401' 3599'403' : 3600$ref : '#/components/responses/Problem403' 3601'405' : 3602$ref : '#/components/responses/Problem405' 3603'406' : 3604$ref : '#/components/responses/Problem406' 3605'503' : 3606$ref : '#/components/responses/Problem503' 3607'404' : 3608$ref : '#/components/responses/Problem404' 3609description : Absent stored permission reads false with its initial canonical validator. 3610parameters : 3611- name : session_id 3612in : path 3613required : true 3614schema : 3615$ref : '#/components/schemas/ID' 3616patch : 3617operationId : patchHookPermission 3618summary : Set agent hook-management permission 3619tags : 3620- webhooks 3621responses : 3622'200' : 3623description : Successful result. 3624content : 3625application/json : 3626schema : 3627$ref : '#/components/schemas/HookPermissionChange' 3628'400' : 3629$ref : '#/components/responses/Problem400' 3630'401' : 3631$ref : '#/components/responses/Problem401' 3632'403' : 3633$ref : '#/components/responses/Problem403' 3634'405' : 3635$ref : '#/components/responses/Problem405' 3636'406' : 3637$ref : '#/components/responses/Problem406' 3638'503' : 3639$ref : '#/components/responses/Problem503' 3640'413' : 3641$ref : '#/components/responses/Problem413' 3642'415' : 3643$ref : '#/components/responses/Problem415' 3644'404' : 3645$ref : '#/components/responses/Problem404' 3646'412' : 3647$ref : '#/components/responses/Problem412' 3648'428' : 3649$ref : '#/components/responses/Problem428' 3650description : Only operator callers can grant permission. Omission retains it; turning off management 3651keeps existing hooks enabled. 3652parameters : 3653- name : session_id 3654in : path 3655required : true 3656schema : 3657$ref : '#/components/schemas/ID' 3658- $ref : '#/components/parameters/IfMatch' 3659requestBody : 3660required : true 3661content : 3662application/merge-patch+json : 3663schema : 3664$ref : '#/components/schemas/HookPermissionPatch' 3665description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 3666/extensions/proxy/v1/models : 3667get : 3668operationId : listProxyModels 3669summary : List saved-profile OpenAI model IDs 3670tags : 3671- proxy 3672responses : 3673'200' : 3674description : Successful result. 3675content : 3676application/json : 3677schema : 3678$ref : '#/components/schemas/ProxyModels' 3679'400' : 3680description : OpenAI proxy error. 3681content : 3682application/json : 3683schema : 3684$ref : '#/components/schemas/ProxyError' 3685'401' : 3686description : OpenAI proxy error. 3687content : 3688application/json : 3689schema : 3690$ref : '#/components/schemas/ProxyError' 3691'403' : 3692description : OpenAI proxy error. 3693content : 3694application/json : 3695schema : 3696$ref : '#/components/schemas/ProxyError' 3697'405' : 3698description : OpenAI proxy error. 3699content : 3700application/json : 3701schema : 3702$ref : '#/components/schemas/ProxyError' 3703'406' : 3704description : OpenAI proxy error. 3705content : 3706application/json : 3707schema : 3708$ref : '#/components/schemas/ProxyError' 3709'503' : 3710description : OpenAI proxy error. 3711content : 3712application/json : 3713schema : 3714$ref : '#/components/schemas/ProxyError' 3715description : External OpenAI envelope. Bearer required unless operator explicitly configured anonymous 3716loopback access. 3717/extensions/proxy/v1/chat/completions : 3718post : 3719operationId : createProxyCompletion 3720summary : Run a stateless OpenAI chat completion 3721tags : 3722- proxy 3723responses : 3724'200' : 3725description : Successful result. 3726content : 3727application/json : 3728schema : 3729$ref : '#/components/schemas/ProxyCompletion' 3730examples : 3731ProxyCompletion : 3732value : 3733id : completion-1 3734object : chat.completion 3735created : 1790949600 3736model : personal/example-model 3737choices : 3738- index : 0 3739message : 3740role : assistant 3741content : Hello 3742finish_reason : stop 3743usage : 3744prompt_tokens : 1 3745completion_tokens : 1 3746total_tokens : 2 3747text/event-stream : 3748itemSchema : 3749$ref : '#/components/schemas/ProxySSE' 3750'400' : 3751description : OpenAI proxy error. 3752content : 3753application/json : 3754schema : 3755$ref : '#/components/schemas/ProxyError' 3756'401' : 3757description : OpenAI proxy error. 3758content : 3759application/json : 3760schema : 3761$ref : '#/components/schemas/ProxyError' 3762'403' : 3763description : OpenAI proxy error. 3764content : 3765application/json : 3766schema : 3767$ref : '#/components/schemas/ProxyError' 3768'405' : 3769description : OpenAI proxy error. 3770content : 3771application/json : 3772schema : 3773$ref : '#/components/schemas/ProxyError' 3774'406' : 3775description : OpenAI proxy error. 3776content : 3777application/json : 3778schema : 3779$ref : '#/components/schemas/ProxyError' 3780'503' : 3781description : OpenAI proxy error. 3782content : 3783application/json : 3784schema : 3785$ref : '#/components/schemas/ProxyError' 3786'413' : 3787description : OpenAI proxy error. 3788content : 3789application/json : 3790schema : 3791$ref : '#/components/schemas/ProxyError' 3792'415' : 3793description : OpenAI proxy error. 3794content : 3795application/json : 3796schema : 3797$ref : '#/components/schemas/ProxyError' 3798description : Caller supplies full history. Tool IDs carry opaque provider state and must be echoed 3799exactly. Bearer required unless anonymous loopback policy explicitly enabled. Providers apply 3800only representable generation options; proxy transport documentation defines these differences. 3801No automatic replay after request admission. 3802requestBody : 3803required : true 3804content : 3805application/json : 3806schema : 3807$ref : '#/components/schemas/ProxyCompletionRequest' 3808examples : 3809ProxyCompletionRequest : 3810value : 3811model : personal/example-model 3812messages : 3813- role : user 3814content : Hello 3815stream : true 3816description : UTF-8 JSON; duplicate keys and unknown fields are rejected. 3817/extensions/run/sessions/{session_id}/jobs : 3818get : 3819operationId : listJobs 3820summary : Read bounded live job observations and the jobs page 3821parameters : 3822- name : session_id 3823in : path 3824required : true 3825schema : 3826$ref : '#/components/schemas/ID' 3827responses : 3828'200' : 3829description : Known live jobs, with up to 100 summaries ordered by ID. 3830content : 3831application/json : 3832schema : 3833$ref : '#/components/schemas/JobCollection' 3834'400' : 3835$ref : '#/components/responses/Problem400' 3836'401' : 3837$ref : '#/components/responses/Problem401' 3838'404' : 3839$ref : '#/components/responses/Problem404' 3840'405' : 3841$ref : '#/components/responses/Problem405' 3842'406' : 3843$ref : '#/components/responses/Problem406' 3844'503' : 3845$ref : '#/components/responses/Problem503' 3846/extensions/run/sessions/{session_id}/jobs/{job_id}/stop : 3847post : 3848operationId : stopJob 3849summary : Explicitly stop one observed process group 3850description : No automatic retry after response loss. Read the job collection before confirming another attempt. A successful response confirms the supervisor verdict, not just signal delivery. 3851parameters : 3852- name : session_id 3853in : path 3854required : true 3855schema : 3856$ref : '#/components/schemas/ID' 3857- name : job_id 3858in : path 3859required : true 3860schema : 3861$ref : '#/components/schemas/ID' 3862responses : 3863'200' : 3864description : The observed job's process group was stopped. 3865content : 3866application/json : 3867schema : 3868$ref : '#/components/schemas/JobStop' 3869'400' : 3870$ref : '#/components/responses/Problem400' 3871'401' : 3872$ref : '#/components/responses/Problem401' 3873'404' : 3874$ref : '#/components/responses/Problem404' 3875'405' : 3876$ref : '#/components/responses/Problem405' 3877'406' : 3878$ref : '#/components/responses/Problem406' 3879'413' : 3880$ref : '#/components/responses/Problem413' 3881'415' : 3882$ref : '#/components/responses/Problem415' 3883'503' : 3884$ref : '#/components/responses/Problem503' 3885requestBody : 3886required : false 3887content : 3888application/json : 3889schema : 3890type : object 3891additionalProperties : false 3892components : 3893securitySchemes : 3894DaemonBearer : 3895type : http 3896scheme : bearer 3897description : Daemon operator token, supplied out of band. Browser clients use fetch for authenticated 3898JSON and SSE. No query tokens or authentication cookies. 3899WebhookSignature : 3900type : apiKey 3901in : header 3902name : X-Albedo-Signature 3903description : Default header only. Each hook may configure another header and prefix. HMAC-SHA256 3904over exact raw bytes; bearer is not an alternative. 3905parameters : 3906IfMatch : 3907name : If-Match 3908in : header 3909required : true 3910schema : 3911$ref : '#/components/schemas/ETag' 3912description : Observed canonical representation validator. Wildcards and weak validators are not 3913accepted. 3914IfNoneMatch : 3915name : If-None-Match 3916in : header 3917required : true 3918schema : 3919const : '*' 3920description : Conditional creation only. 3921Limit : 3922name : limit 3923in : query 3924required : false 3925schema : 3926type : integer 3927minimum : 1 3928maximum : 200 3929default : 50 3930Next : 3931name : next 3932in : query 3933required : false 3934schema : 3935$ref : '#/components/schemas/PageToken' 3936headers : 3937ETag : 3938description : Opaque strong validator for the complete canonical JSON representation. Mutation envelopes 3939carry their resource validator inside the body. 3940schema : 3941$ref : '#/components/schemas/ETag' 3942Location : 3943description : URL of the created resource. 3944schema : 3945$ref : '#/components/schemas/ResourceURL' 3946required : true 3947Vary : 3948description : Includes Accept; browser responses also include Origin. 3949schema : 3950type : string 3951RetryAfter : 3952description : Seconds until a later new admission may succeed. Never retries an already rejected 3953identified input. 3954schema : 3955type : integer 3956minimum : 0 3957maximum : 3600 3958WWWAuthenticate : 3959description : Bearer challenge. 3960schema : 3961type : string 3962pattern : ^Bearer 3963Allow : 3964description : Allowed methods for a known path. 3965schema : 3966type : string 3967responses : 3968Problem400 : 3969description : Invalid request 3970content : 3971application/problem+json : 3972schema : 3973$ref : '#/components/schemas/Problem' 3974Problem401 : 3975description : Missing or invalid daemon token 3976headers : 3977WWWAuthenticate : 3978$ref : '#/components/headers/WWWAuthenticate' 3979content : 3980application/problem+json : 3981schema : 3982$ref : '#/components/schemas/Problem' 3983Problem403 : 3984description : Disallowed origin or caller 3985content : 3986application/problem+json : 3987schema : 3988$ref : '#/components/schemas/Problem' 3989Problem404 : 3990description : Unknown resource or disabled service 3991content : 3992application/problem+json : 3993schema : 3994$ref : '#/components/schemas/Problem' 3995Problem405 : 3996description : Method not allowed 3997headers : 3998Allow : 3999$ref : '#/components/headers/Allow' 4000content : 4001application/problem+json : 4002schema : 4003$ref : '#/components/schemas/Problem' 4004Problem406 : 4005description : Unsupported response media type 4006content : 4007application/problem+json : 4008schema : 4009$ref : '#/components/schemas/Problem' 4010Problem409 : 4011description : Conflicting intent, busy state or stale catalog 4012content : 4013application/problem+json : 4014schema : 4015$ref : '#/components/schemas/Problem' 4016Problem410 : 4017description : Expired identity, deletion tombstone or obsolete context 4018content : 4019application/problem+json : 4020schema : 4021$ref : '#/components/schemas/Problem' 4022Problem412 : 4023description : Stale representation or failed creation condition 4024content : 4025application/problem+json : 4026schema : 4027$ref : '#/components/schemas/Problem' 4028Problem413 : 4029description : Body too large 4030content : 4031application/problem+json : 4032schema : 4033$ref : '#/components/schemas/Problem' 4034Problem415 : 4035description : Unsupported request media type 4036content : 4037application/problem+json : 4038schema : 4039$ref : '#/components/schemas/Problem' 4040Problem428 : 4041description : Required precondition missing 4042content : 4043application/problem+json : 4044schema : 4045$ref : '#/components/schemas/Problem' 4046Problem429 : 4047description : Admission limit 4048headers : 4049RetryAfter : 4050$ref : '#/components/headers/RetryAfter' 4051content : 4052application/problem+json : 4053schema : 4054$ref : '#/components/schemas/Problem' 4055Problem503 : 4056description : Unavailable owner, storage or upstream preparation 4057content : 4058application/problem+json : 4059schema : 4060$ref : '#/components/schemas/Problem' 4061schemas : 4062ID : 4063type : string 4064minLength : 1 4065description : Opaque identity. Never infer a resource type or route from its contents. 4066maxLength : 512 4067UUIDv7 : 4068type : string 4069pattern : ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$ 4070format : uuid 4071description : Client-generated lowercase UUIDv7. Retained decisions are checked before timestamp 4072expiry. 4073Generation : 4074type : string 4075pattern : ^[A-Za-z0-9_-]{21}[AQgw]$ 4076description : 128 random bits encoded as unpadded base64url; new for each session actor lifetime. 4077Counter : 4078type : integer 4079minimum : 0 4080maximum : 9007199254740991 4081Timestamp : 4082type : string 4083format : date-time 4084pattern : Z$ 4085description : UTC RFC 3339. 4086PageToken : 4087type : string 4088minLength : 1 4089description : Opaque continuation, tied to the query and representation; never authority. 4090maxLength : 4096 4091ETag : 4092type : string 4093pattern : ^"[^"\r\n]+"$ 4094description : Strong opaque validator for the complete canonical representation. 4095maxLength : 512 4096ResourceURL : 4097type : string 4098pattern : ^/([^/#][^#]*)?$ 4099description : Daemon-relative URL, including any representation query. No foreign origin or fragment. 4100maxLength : 16384 4101Workspace : 4102type : string 4103minLength : 1 4104description : Canonical daemon-host location, local or SSH. Clients do not resolve this path locally. 4105maxLength : 4096 4106SafeReason : 4107type : object 4108properties : 4109code : 4110type : string 4111minLength : 1 4112maxLength : 100 4113detail : 4114type : string 4115maxLength : 4096 4116required : [ code , detail ] 4117additionalProperties : false 4118Warnings : 4119type : array 4120items : 4121$ref : '#/components/schemas/SafeReason' 4122maxItems : 100 4123DynamicJSON : 4124description : 'Explicit domain payload: tool arguments, tool results, provider-private state, or 4125extension data. JSON values of any type are allowed; no core resource uses this as its envelope.' 4126Problem : 4127type : object 4128properties : 4129type : 4130const : about:blank 4131title : 4132type : string 4133maxLength : 256 4134status : 4135type : integer 4136minimum : 400 4137maximum : 599 4138detail : 4139type : string 4140maxLength : 4096 4141code : 4142type : string 4143minLength : 1 4144maxLength : 100 4145fields : 4146type : array 4147items : 4148type : object 4149properties : 4150pointer : 4151type : string 4152maxLength : 4096 4153detail : 4154type : string 4155maxLength : 4096 4156required : [ pointer , detail ] 4157additionalProperties : false 4158maxItems : 100 4159decision : 4160oneOf : 4161- $ref : '#/components/schemas/CreationDecision' 4162- $ref : '#/components/schemas/InputDecision' 4163required : [ type , title , status , detail , code ] 4164additionalProperties : false 4165examples : 4166- type : about:blank 4167title : Queue full 4168status : 429 4169detail : This session already has 32 waiting inputs. 4170code : queue_full 4171decision : 4172kind : input 4173input : 4174id : 01a0fcea-2b00-7000-8000-000000000002 4175session_id : 01a0fcea-2b00-7000-8000-000000000001 4176kind : message 4177admission : rejected 4178http_status : 429 4179problem : 4180type : about:blank 4181title : Queue full 4182status : 429 4183detail : This session already has 32 waiting inputs. 4184code : queue_full 4185accepted_at : null 4186acceptance_order : null 4187delivery : null 4188blocking_reason : null 4189transcript_position : null 4190turn : null 4191client_id : draft-1 4192EmptyRequest : 4193type : object 4194properties : {} 4195additionalProperties : false 4196Cursor : 4197type : object 4198properties : 4199generation : 4200$ref : '#/components/schemas/Generation' 4201sequence : 4202$ref : '#/components/schemas/Counter' 4203required : [ generation , sequence ] 4204additionalProperties : false 4205ResourceValidator : 4206type : object 4207properties : 4208url : 4209$ref : '#/components/schemas/ResourceURL' 4210etag : 4211$ref : '#/components/schemas/ETag' 4212required : [ url , etag ] 4213additionalProperties : false 4214Notification : 4215type : object 4216properties : 4217state : 4218type : string 4219enum : [ not_requested , queued , failed ] 4220code : 4221anyOf : 4222- type : string 4223maxLength : 100 4224- type : 'null' 4225detail : 4226anyOf : 4227- type : string 4228maxLength : 4096 4229- type : 'null' 4230required : [ state , code , detail ] 4231additionalProperties : false 4232TargetNotification : 4233type : object 4234properties : 4235session_id : 4236$ref : '#/components/schemas/ID' 4237notification : 4238$ref : '#/components/schemas/Notification' 4239required : [ session_id , notification ] 4240additionalProperties : false 4241QuotaObservation : 4242type : object 4243properties : 4244sequence : 4245$ref : '#/components/schemas/Counter' 4246provider : 4247$ref : '#/components/schemas/ID' 4248account_id : 4249$ref : '#/components/schemas/ID' 4250limit_id : 4251type : string 4252maxLength : 256 4253label : 4254type : string 4255maxLength : 4096 4256plan : 4257anyOf : 4258- type : string 4259maxLength : 256 4260- type : 'null' 4261used_percent : 4262anyOf : 4263- type : number 4264- type : 'null' 4265window_label : 4266anyOf : 4267- type : string 4268maxLength : 4096 4269- type : 'null' 4270window_seconds : 4271anyOf : 4272- $ref : '#/components/schemas/Counter' 4273- type : 'null' 4274resets_at : 4275anyOf : 4276- $ref : '#/components/schemas/Timestamp' 4277- type : 'null' 4278scope : 4279anyOf : 4280- type : string 4281maxLength : 256 4282- type : 'null' 4283status : 4284type : string 4285maxLength : 256 4286source : 4287type : string 4288maxLength : 256 4289error : 4290anyOf : 4291- $ref : '#/components/schemas/SafeReason' 4292- type : 'null' 4293observed_at : 4294$ref : '#/components/schemas/Timestamp' 4295required : 4296- sequence 4297- provider 4298- account_id 4299- limit_id 4300- label 4301- plan 4302- used_percent 4303- window_label 4304- window_seconds 4305- resets_at 4306- scope 4307- status 4308- source 4309- error 4310- observed_at 4311additionalProperties : false 4312QuotaPage : 4313type : object 4314properties : 4315items : 4316type : array 4317items : 4318$ref : '#/components/schemas/QuotaObservation' 4319maxItems : 200 4320next : 4321anyOf : 4322- $ref : '#/components/schemas/PageToken' 4323- type : 'null' 4324required : [ items , next ] 4325additionalProperties : false 4326Server : 4327type : object 4328properties : 4329instance_id : 4330$ref : '#/components/schemas/ID' 4331protocol : 4332const : 3 4333state : 4334type : string 4335enum : [ ready , draining ] 4336capabilities : 4337type : object 4338additionalProperties : 4339type : integer 4340minimum : 1 4341maximum : 9007199254740991 4342build : 4343anyOf : 4344- type : string 4345maxLength : 512 4346- type : 'null' 4347digest : 4348type : [ string , 'null' ] 4349pattern : ^[0-9a-f]{64}$ 4350description : Content digest of the running code tree; update information, not attachment compatibility. 4351extensions : 4352type : array 4353items : 4354type : object 4355properties : 4356name : 4357$ref : '#/components/schemas/ID' 4358version : 4359type : integer 4360minimum : 1 4361maximum : 9007199254740991 4362required : [ name , version ] 4363additionalProperties : false 4364maxItems : 200 4365quota : 4366anyOf : 4367- type : array 4368items : 4369$ref : '#/components/schemas/QuotaObservation' 4370maxItems : 200 4371- type : 'null' 4372notices : 4373type : array 4374items : 4375type : object 4376properties : 4377id : 4378$ref : '#/components/schemas/ID' 4379kind : 4380type : string 4381enum : [ info , warning , migration ] 4382message : 4383type : string 4384maxLength : 4096 4385required : [ id , kind , message ] 4386additionalProperties : false 4387maxItems : 100 4388quota_history : 4389$ref : '#/components/schemas/QuotaPage' 4390required : [ instance_id , protocol , state , capabilities , build , digest , extensions , quota , notices ] 4391additionalProperties : false 4392examples : 4393- instance_id : instance-1 4394protocol : 3 4395state : ready 4396capabilities : 4397durable_inputs : 1 4398session_replay : 1 4399collection_invalidation : 1 4400tool_progress : 1 4401storage_report : 1 4402build : example-build 4403digest : null 4404extensions : 4405- name : work 4406version : 1 4407quota : null 4408notices : [] 4409ShutdownRequest : 4410type : object 4411properties : 4412instance_id : 4413$ref : '#/components/schemas/ID' 4414timeout_ms : 4415type : integer 4416minimum : 1 4417maximum : 30000 4418default : 5000 4419required : [ instance_id ] 4420additionalProperties : false 4421Shutdown : 4422type : object 4423properties : 4424instance_id : 4425$ref : '#/components/schemas/ID' 4426state : 4427const : draining 4428required : [ instance_id , state ] 4429additionalProperties : false 4430ProviderProfile : 4431type : object 4432properties : 4433extension : 4434$ref : '#/components/schemas/ID' 4435endpoint : 4436anyOf : 4437- type : string 4438format : uri 4439maxLength : 4096 4440- type : 'null' 4441protocol : 4442type : string 4443enum : [ responses , chat_completions ] 4444model : 4445$ref : '#/components/schemas/ID' 4446effort : 4447anyOf : 4448- type : string 4449maxLength : 100 4450- type : 'null' 4451image_edge : 4452anyOf : 4453- type : integer 4454minimum : 1 4455maximum : 65536 4456- type : 'null' 4457account_id : 4458anyOf : 4459- $ref : '#/components/schemas/ID' 4460- type : 'null' 4461project : 4462anyOf : 4463- type : string 4464maxLength : 256 4465- type : 'null' 4466location : 4467anyOf : 4468- type : string 4469maxLength : 256 4470- type : 'null' 4471has_key : 4472type : boolean 4473required : [ extension , endpoint , protocol , model , effort , image_edge , account_id , project , location , has_key ] 4474additionalProperties : false 4475ProviderProfilePatch : 4476type : object 4477properties : 4478extension : 4479$ref : '#/components/schemas/ID' 4480endpoint : 4481anyOf : 4482- type : string 4483format : uri 4484maxLength : 4096 4485- type : 'null' 4486protocol : 4487type : string 4488enum : [ responses , chat_completions ] 4489model : 4490$ref : '#/components/schemas/ID' 4491effort : 4492anyOf : 4493- type : string 4494maxLength : 100 4495- type : 'null' 4496image_edge : 4497anyOf : 4498- type : integer 4499minimum : 1 4500maximum : 65536 4501- type : 'null' 4502account_id : 4503anyOf : 4504- $ref : '#/components/schemas/ID' 4505- type : 'null' 4506project : 4507anyOf : 4508- type : string 4509maxLength : 256 4510- type : 'null' 4511location : 4512anyOf : 4513- type : string 4514maxLength : 256 4515- type : 'null' 4516api_key : 4517anyOf : 4518- type : string 4519minLength : 1 4520writeOnly : true 4521maxLength : 16384 4522- type : 'null' 4523description : Partial existing profile; extension and model required when creating a new map entry. 4524additionalProperties : false 4525ProviderSettings : 4526type : object 4527properties : 4528default_profile : 4529anyOf : 4530- $ref : '#/components/schemas/ID' 4531- type : 'null' 4532profiles : 4533type : object 4534additionalProperties : 4535$ref : '#/components/schemas/ProviderProfile' 4536required : [ default_profile , profiles ] 4537additionalProperties : false 4538ProviderSettingsPatch : 4539type : object 4540properties : 4541default_profile : 4542anyOf : 4543- $ref : '#/components/schemas/ID' 4544- type : 'null' 4545profiles : 4546type : object 4547additionalProperties : 4548anyOf : 4549- $ref : '#/components/schemas/ProviderProfilePatch' 4550- type : 'null' 4551description : Removing the selected profile requires replacing or clearing default_profile in this 4552same patch. 4553additionalProperties : false 4554examples : 4555- default_profile : personal 4556profiles : 4557personal : 4558extension : openai 4559endpoint : https://provider.example/v1 4560protocol : responses 4561model : example-model 4562effort : null 4563image_edge : null 4564account_id : null 4565project : null 4566location : null 4567api_key : synthetic-example-key 4568ValueSource : 4569type : object 4570properties : 4571source : 4572type : string 4573enum : [ literal , env ] 4574value : 4575type : string 4576maxLength : 16384 4577description : For env, value is a daemon-host environment variable name. 4578required : [ source , value ] 4579additionalProperties : false 4580SecretPresence : 4581type : object 4582properties : 4583bearer_token : 4584type : boolean 4585environment : 4586type : array 4587items : 4588type : string 4589maxLength : 256 4590maxItems : 200 4591headers : 4592type : array 4593items : 4594type : string 4595maxLength : 256 4596maxItems : 200 4597required : [ bearer_token , environment , headers ] 4598additionalProperties : false 4599MCPDefinition : 4600type : object 4601properties : 4602enabled : 4603type : boolean 4604transport : 4605type : string 4606enum : [ stdio , http ] 4607command : 4608anyOf : 4609- type : string 4610maxLength : 4096 4611- type : 'null' 4612arguments : 4613type : array 4614items : 4615type : string 4616maxLength : 4096 4617maxItems : 200 4618cwd : 4619anyOf : 4620- $ref : '#/components/schemas/Workspace' 4621- type : 'null' 4622url : 4623anyOf : 4624- type : string 4625format : uri 4626maxLength : 4096 4627- type : 'null' 4628environment : 4629type : object 4630additionalProperties : 4631$ref : '#/components/schemas/ValueSource' 4632headers : 4633type : object 4634additionalProperties : 4635$ref : '#/components/schemas/ValueSource' 4636bearer_token_env_var : 4637anyOf : 4638- type : string 4639maxLength : 256 4640- type : 'null' 4641enabled_tools : 4642anyOf : 4643- type : array 4644items : 4645type : string 4646maxLength : 256 4647maxItems : 1000 4648- type : 'null' 4649disabled_tools : 4650type : array 4651items : 4652type : string 4653maxLength : 256 4654maxItems : 1000 4655startup_timeout_ms : 4656type : integer 4657minimum : 1 4658maximum : 300000 4659call_timeout_ms : 4660type : integer 4661minimum : 1 4662maximum : 3600000 4663secret_presence : 4664$ref : '#/components/schemas/SecretPresence' 4665required : [ enabled , transport , command , arguments , cwd , url , environment , headers , bearer_token_env_var , 4666enabled_tools , disabled_tools , startup_timeout_ms , call_timeout_ms , secret_presence ] 4667additionalProperties : false 4668MCPSecretsPatch : 4669type : object 4670properties : 4671bearer_token : 4672anyOf : 4673- type : string 4674minLength : 1 4675writeOnly : true 4676maxLength : 16384 4677- type : 'null' 4678environment : 4679type : object 4680additionalProperties : 4681anyOf : 4682- type : string 4683writeOnly : true 4684maxLength : 16384 4685- type : 'null' 4686headers : 4687type : object 4688additionalProperties : 4689anyOf : 4690- type : string 4691writeOnly : true 4692maxLength : 16384 4693- type : 'null' 4694writeOnly : true 4695additionalProperties : false 4696MCPDefinitionPatch : 4697type : object 4698properties : 4699enabled : 4700type : boolean 4701transport : 4702type : string 4703enum : [ stdio , http ] 4704command : 4705anyOf : 4706- type : string 4707maxLength : 4096 4708- type : 'null' 4709arguments : 4710type : array 4711items : 4712type : string 4713maxLength : 4096 4714maxItems : 200 4715cwd : 4716anyOf : 4717- $ref : '#/components/schemas/Workspace' 4718- type : 'null' 4719url : 4720anyOf : 4721- type : string 4722format : uri 4723maxLength : 4096 4724- type : 'null' 4725environment : 4726anyOf : 4727- type : object 4728additionalProperties : 4729anyOf : 4730- $ref : '#/components/schemas/ValueSource' 4731- type : 'null' 4732- type : 'null' 4733headers : 4734anyOf : 4735- type : object 4736additionalProperties : 4737anyOf : 4738- $ref : '#/components/schemas/ValueSource' 4739- type : 'null' 4740- type : 'null' 4741bearer_token_env_var : 4742anyOf : 4743- type : string 4744maxLength : 256 4745- type : 'null' 4746enabled_tools : 4747anyOf : 4748- type : array 4749items : 4750type : string 4751maxLength : 256 4752maxItems : 1000 4753- type : 'null' 4754disabled_tools : 4755type : array 4756items : 4757type : string 4758maxLength : 256 4759maxItems : 1000 4760startup_timeout_ms : 4761type : integer 4762minimum : 1 4763maximum : 300000 4764call_timeout_ms : 4765type : integer 4766minimum : 1 4767maximum : 3600000 4768secrets : 4769$ref : '#/components/schemas/MCPSecretsPatch' 4770description : Partial merge patch. Public and secret sources cannot overlap. HTTP and stdio fields 4771are validated against transport on the complete candidate. Public environment/header entries accept 4772null removal; a null whole map clears it. Switching credential sources removes the former source 4773in the same patch. 4774additionalProperties : false 4775MCPSettings : 4776type : object 4777properties : 4778definitions : 4779type : object 4780additionalProperties : 4781$ref : '#/components/schemas/MCPDefinition' 4782required : [ definitions ] 4783additionalProperties : false 4784MCPSettingsPatch : 4785type : object 4786properties : 4787definitions : 4788type : object 4789additionalProperties : 4790anyOf : 4791- $ref : '#/components/schemas/MCPDefinitionPatch' 4792- type : 'null' 4793validate_connection : 4794type : boolean 4795default : true 4796writeOnly : true 4797description : Validate candidate connections before atomic commit unless explicitly disabled. 4798additionalProperties : false 4799examples : 4800- validate_connection : true 4801definitions : 4802example : 4803enabled : true 4804transport : http 4805url : https://tools.example/mcp 4806secrets : 4807bearer_token : synthetic-example-token 4808ExtensionSettings : 4809type : object 4810properties : 4811defaults : 4812type : object 4813additionalProperties : 4814type : boolean 4815required : [ defaults ] 4816additionalProperties : false 4817ExtensionSettingsPatch : 4818type : object 4819properties : 4820defaults : 4821type : object 4822additionalProperties : 4823anyOf : 4824- type : boolean 4825- type : 'null' 4826additionalProperties : false 4827CapabilitySettings : 4828type : object 4829properties : 4830preferences : 4831type : object 4832additionalProperties : 4833type : boolean 4834required : [ preferences ] 4835additionalProperties : false 4836CapabilitySettingsPatch : 4837type : object 4838properties : 4839catalog_session_id : 4840$ref : '#/components/schemas/ID' 4841catalog_revision : 4842$ref : '#/components/schemas/ID' 4843choices : 4844type : object 4845additionalProperties : 4846anyOf : 4847- type : boolean 4848- type : 'null' 4849description : Resolve candidate IDs to stable preference keys under the observed catalog revision. 4850required : [ catalog_session_id , catalog_revision , choices ] 4851additionalProperties : false 4852CachePrior : 4853type : object 4854properties : 4855provider : 4856$ref : '#/components/schemas/ID' 4857model : 4858anyOf : 4859- $ref : '#/components/schemas/ID' 4860- type : 'null' 4861ttl_seconds : 4862anyOf : 4863- type : integer 4864minimum : 0 4865maximum : 9007199254740991 4866- type : 'null' 4867source : 4868type : string 4869maxLength : 256 4870required : [ provider , model , ttl_seconds , source ] 4871additionalProperties : false 4872ModelSettings : 4873type : object 4874properties : 4875raised_caps : 4876type : object 4877additionalProperties : 4878type : boolean 4879cache_ttl_priors : 4880type : array 4881items : 4882$ref : '#/components/schemas/CachePrior' 4883maxItems : 200 4884required : [ raised_caps , cache_ttl_priors ] 4885additionalProperties : false 4886ModelSettingsPatch : 4887type : object 4888properties : 4889raised_caps : 4890type : object 4891additionalProperties : 4892anyOf : 4893- type : boolean 4894- type : 'null' 4895description : Keys are cap_key values from model metadata. True raises to the advertised maximum; 4896false uses the ordinary limit; null clears the choice. A missing choice defaults to false. Only 4897raised_caps is writable. 4898additionalProperties : false 4899UISettings : 4900type : object 4901properties : 4902thinking : 4903type : boolean 4904tools : 4905type : boolean 4906dismissed_notices : 4907type : array 4908items : 4909$ref : '#/components/schemas/ID' 4910maxItems : 1000 4911required : [ thinking , tools , dismissed_notices ] 4912additionalProperties : false 4913UISettingsPatch : 4914type : object 4915properties : 4916thinking : 4917type : boolean 4918tools : 4919type : boolean 4920dismissed_notices : 4921type : array 4922items : 4923$ref : '#/components/schemas/ID' 4924maxItems : 1000 4925additionalProperties : false 4926ProviderSettingsResource : 4927type : object 4928properties : 4929url : 4930$ref : '#/components/schemas/ResourceURL' 4931etag : 4932$ref : '#/components/schemas/ETag' 4933value : 4934$ref : '#/components/schemas/ProviderSettings' 4935required : [ url , etag , value ] 4936additionalProperties : false 4937MCPSettingsResource : 4938type : object 4939properties : 4940url : 4941$ref : '#/components/schemas/ResourceURL' 4942etag : 4943$ref : '#/components/schemas/ETag' 4944value : 4945$ref : '#/components/schemas/MCPSettings' 4946required : [ url , etag , value ] 4947additionalProperties : false 4948ExtensionSettingsResource : 4949type : object 4950properties : 4951url : 4952$ref : '#/components/schemas/ResourceURL' 4953etag : 4954$ref : '#/components/schemas/ETag' 4955value : 4956$ref : '#/components/schemas/ExtensionSettings' 4957required : [ url , etag , value ] 4958additionalProperties : false 4959CapabilitySettingsResource : 4960type : object 4961properties : 4962url : 4963$ref : '#/components/schemas/ResourceURL' 4964etag : 4965$ref : '#/components/schemas/ETag' 4966value : 4967$ref : '#/components/schemas/CapabilitySettings' 4968required : [ url , etag , value ] 4969additionalProperties : false 4970ModelSettingsResource : 4971type : object 4972properties : 4973url : 4974$ref : '#/components/schemas/ResourceURL' 4975etag : 4976$ref : '#/components/schemas/ETag' 4977value : 4978$ref : '#/components/schemas/ModelSettings' 4979required : [ url , etag , value ] 4980additionalProperties : false 4981UISettingsResource : 4982type : object 4983properties : 4984url : 4985$ref : '#/components/schemas/ResourceURL' 4986etag : 4987$ref : '#/components/schemas/ETag' 4988value : 4989$ref : '#/components/schemas/UISettings' 4990required : [ url , etag , value ] 4991additionalProperties : false 4992Settings : 4993type : object 4994properties : 4995providers : 4996$ref : '#/components/schemas/ProviderSettings' 4997mcp : 4998$ref : '#/components/schemas/MCPSettings' 4999extensions : 5000$ref : '#/components/schemas/ExtensionSettings' 5001capabilities : 5002$ref : '#/components/schemas/CapabilitySettings' 5003models : 5004$ref : '#/components/schemas/ModelSettings' 5005ui : 5006$ref : '#/components/schemas/UISettings' 5007group_resources : 5008type : object 5009properties : 5010providers : 5011$ref : '#/components/schemas/ResourceValidator' 5012mcp : 5013$ref : '#/components/schemas/ResourceValidator' 5014extensions : 5015$ref : '#/components/schemas/ResourceValidator' 5016capabilities : 5017$ref : '#/components/schemas/ResourceValidator' 5018models : 5019$ref : '#/components/schemas/ResourceValidator' 5020ui : 5021$ref : '#/components/schemas/ResourceValidator' 5022required : [ providers , mcp , extensions , capabilities , models , ui ] 5023additionalProperties : false 5024required : [ providers , mcp , extensions , capabilities , models , ui , group_resources ] 5025additionalProperties : false 5026SettingsRead : 5027oneOf : 5028- $ref : '#/components/schemas/Settings' 5029- $ref : '#/components/schemas/ProviderSettings' 5030- $ref : '#/components/schemas/MCPSettings' 5031- $ref : '#/components/schemas/ExtensionSettings' 5032- $ref : '#/components/schemas/CapabilitySettings' 5033- $ref : '#/components/schemas/ModelSettings' 5034- $ref : '#/components/schemas/UISettings' 5035SettingsPatch : 5036anyOf : 5037- $ref : '#/components/schemas/ProviderSettingsPatch' 5038- $ref : '#/components/schemas/MCPSettingsPatch' 5039- $ref : '#/components/schemas/ExtensionSettingsPatch' 5040- $ref : '#/components/schemas/CapabilitySettingsPatch' 5041- $ref : '#/components/schemas/ModelSettingsPatch' 5042- $ref : '#/components/schemas/UISettingsPatch' 5043description : The group query selects the one applicable patch schema. It is an error to send fields 5044for another group. 5045SettingsApplication : 5046type : object 5047properties : 5048desired_revision : 5049$ref : '#/components/schemas/ID' 5050active_service_revision : 5051anyOf : 5052- $ref : '#/components/schemas/ID' 5053- type : 'null' 5054composition_changed : 5055type : boolean 5056description : Whether this save changed the desired composition, so loaded sessions need a 5057reload to apply it. Always false for providers, models and ui. A concurrent save to another 5058composition group can make it true. GET /sessions?needs_reload=true lists the sessions. 5059validation : 5060type : string 5061enum : [ passed , skipped , not_applicable ] 5062warnings : 5063$ref : '#/components/schemas/Warnings' 5064required : [ desired_revision , active_service_revision , composition_changed , validation , warnings ] 5065additionalProperties : false 5066ProviderSettingsChange : 5067type : object 5068properties : 5069group : 5070const : providers 5071resource : 5072$ref : '#/components/schemas/ProviderSettingsResource' 5073application : 5074$ref : '#/components/schemas/SettingsApplication' 5075required : [ group , resource , application ] 5076additionalProperties : false 5077MCPSettingsChange : 5078type : object 5079properties : 5080group : 5081const : mcp 5082resource : 5083$ref : '#/components/schemas/MCPSettingsResource' 5084application : 5085$ref : '#/components/schemas/SettingsApplication' 5086required : [ group , resource , application ] 5087additionalProperties : false 5088ExtensionSettingsChange : 5089type : object 5090properties : 5091group : 5092const : extensions 5093resource : 5094$ref : '#/components/schemas/ExtensionSettingsResource' 5095application : 5096$ref : '#/components/schemas/SettingsApplication' 5097required : [ group , resource , application ] 5098additionalProperties : false 5099CapabilitySettingsChange : 5100type : object 5101properties : 5102group : 5103const : capabilities 5104resource : 5105$ref : '#/components/schemas/CapabilitySettingsResource' 5106application : 5107$ref : '#/components/schemas/SettingsApplication' 5108required : [ group , resource , application ] 5109additionalProperties : false 5110ModelSettingsChange : 5111type : object 5112properties : 5113group : 5114const : models 5115resource : 5116$ref : '#/components/schemas/ModelSettingsResource' 5117application : 5118$ref : '#/components/schemas/SettingsApplication' 5119required : [ group , resource , application ] 5120additionalProperties : false 5121UISettingsChange : 5122type : object 5123properties : 5124group : 5125const : ui 5126resource : 5127$ref : '#/components/schemas/UISettingsResource' 5128application : 5129$ref : '#/components/schemas/SettingsApplication' 5130required : [ group , resource , application ] 5131additionalProperties : false 5132SettingsChange : 5133oneOf : 5134- $ref : '#/components/schemas/ProviderSettingsChange' 5135- $ref : '#/components/schemas/MCPSettingsChange' 5136- $ref : '#/components/schemas/ExtensionSettingsChange' 5137- $ref : '#/components/schemas/CapabilitySettingsChange' 5138- $ref : '#/components/schemas/ModelSettingsChange' 5139- $ref : '#/components/schemas/UISettingsChange' 5140StorageSession : 5141type : object 5142properties : 5143id : 5144$ref : '#/components/schemas/ID' 5145title : 5146type : string 5147maxLength : 4096 5148workspace : 5149$ref : '#/components/schemas/Workspace' 5150created_at : 5151anyOf : 5152- $ref : '#/components/schemas/Timestamp' 5153- type : 'null' 5154activity_at : 5155anyOf : 5156- $ref : '#/components/schemas/Timestamp' 5157- type : 'null' 5158estimated_content_bytes : 5159$ref : '#/components/schemas/Counter' 5160required : [ id , title , workspace , created_at , activity_at , estimated_content_bytes ] 5161additionalProperties : false 5162StorageFile : 5163type : object 5164properties : 5165path : 5166type : string 5167maxLength : 4096 5168category : 5169type : string 5170enum : [ kernel , backup , other ] 5171bytes : 5172$ref : '#/components/schemas/Counter' 5173modified_at : 5174anyOf : 5175- $ref : '#/components/schemas/Timestamp' 5176- type : 'null' 5177cleanup_candidate : 5178type : boolean 5179cleanup_reason : 5180anyOf : 5181- type : string 5182maxLength : 100 5183- type : 'null' 5184required : [ path , category , bytes , modified_at , cleanup_candidate , cleanup_reason ] 5185additionalProperties : false 5186StorageSessionPage : 5187type : object 5188properties : 5189items : 5190type : array 5191items : 5192$ref : '#/components/schemas/StorageSession' 5193maxItems : 200 5194next : 5195anyOf : 5196- $ref : '#/components/schemas/PageToken' 5197- type : 'null' 5198total_count : 5199$ref : '#/components/schemas/Counter' 5200total_estimated_content_bytes : 5201$ref : '#/components/schemas/Counter' 5202required : [ items , next , total_count , total_estimated_content_bytes ] 5203additionalProperties : false 5204StorageFilePage : 5205type : object 5206properties : 5207items : 5208type : array 5209items : 5210$ref : '#/components/schemas/StorageFile' 5211maxItems : 200 5212next : 5213anyOf : 5214- $ref : '#/components/schemas/PageToken' 5215- type : 'null' 5216totals : 5217type : object 5218properties : 5219kernel_bytes : 5220$ref : '#/components/schemas/Counter' 5221backup_bytes : 5222$ref : '#/components/schemas/Counter' 5223other_bytes : 5224$ref : '#/components/schemas/Counter' 5225recent_backup_bytes : 5226$ref : '#/components/schemas/Counter' 5227recent_backup_count : 5228$ref : '#/components/schemas/Counter' 5229required : [ kernel_bytes , backup_bytes , other_bytes , recent_backup_bytes , recent_backup_count ] 5230additionalProperties : false 5231required : [ items , next , totals ] 5232additionalProperties : false 5233StorageReport : 5234type : object 5235properties : 5236database : 5237type : object 5238properties : 5239main_file_bytes : 5240$ref : '#/components/schemas/Counter' 5241wal_bytes : 5242$ref : '#/components/schemas/Counter' 5243page_size_bytes : 5244$ref : '#/components/schemas/Counter' 5245page_count : 5246$ref : '#/components/schemas/Counter' 5247free_page_count : 5248$ref : '#/components/schemas/Counter' 5249used_bytes : 5250$ref : '#/components/schemas/Counter' 5251required : [ main_file_bytes , wal_bytes , page_size_bytes , page_count , free_page_count , used_bytes ] 5252additionalProperties : false 5253sessions : 5254$ref : '#/components/schemas/StorageSessionPage' 5255images : 5256type : object 5257properties : 5258count : 5259$ref : '#/components/schemas/Counter' 5260bytes : 5261$ref : '#/components/schemas/Counter' 5262required : [ count , bytes ] 5263additionalProperties : false 5264files : 5265$ref : '#/components/schemas/StorageFilePage' 5266measured_at : 5267$ref : '#/components/schemas/Timestamp' 5268required : [ database , sessions , images , files , measured_at ] 5269additionalProperties : false 5270examples : 5271- database : 5272main_file_bytes : 8192 5273wal_bytes : 0 5274page_size_bytes : 4096 5275page_count : 2 5276free_page_count : 0 5277used_bytes : 8192 5278sessions : 5279items : [] 5280next : null 5281total_count : 0 5282total_estimated_content_bytes : 0 5283images : 5284count : 0 5285bytes : 0 5286files : 5287items : [] 5288next : null 5289totals : 5290kernel_bytes : 0 5291backup_bytes : 0 5292other_bytes : 0 5293recent_backup_bytes : 0 5294recent_backup_count : 0 5295measured_at : '2026-10-02T14:00:00Z' 5296SessionStatus : 5297type : object 5298properties : 5299phase : 5300type : string 5301enum : [ idle , preparing , generating , running , interrupting , compacting ] 5302run_id : 5303anyOf : 5304- $ref : '#/components/schemas/ID' 5305- type : 'null' 5306interrupt_requested : 5307type : boolean 5308blocking_reason : 5309anyOf : 5310- $ref : '#/components/schemas/SafeReason' 5311- type : 'null' 5312required : [ phase , run_id , interrupt_requested , blocking_reason ] 5313additionalProperties : false 5314Preview : 5315type : object 5316properties : 5317text : 5318type : string 5319x-max-utf8-bytes : 1024 5320maxLength : 256 5321transcript_count : 5322$ref : '#/components/schemas/Counter' 5323truncated : 5324type : boolean 5325required : [ text , transcript_count , truncated ] 5326additionalProperties : false 5327SessionPreferences : 5328type : object 5329properties : 5330pinned : 5331type : boolean 5332pin_order : 5333anyOf : 5334- $ref : '#/components/schemas/Counter' 5335- type : 'null' 5336archived : 5337type : boolean 5338opens : 5339$ref : '#/components/schemas/Counter' 5340required : [ pinned , pin_order , archived , opens ] 5341additionalProperties : false 5342PreferencePatch : 5343type : object 5344properties : 5345pinned : 5346type : boolean 5347archived : 5348type : boolean 5349additionalProperties : false 5350ProgressPreview : 5351type : object 5352properties : 5353offset_scalars : 5354$ref : '#/components/schemas/Counter' 5355text : 5356type : string 5357x-max-utf8-bytes : 2048 5358maxLength : 512 5359required : [ offset_scalars , text ] 5360additionalProperties : false 5361ToolProgress : 5362type : object 5363properties : 5364call_id : 5365$ref : '#/components/schemas/ID' 5366tool_call_id : 5367anyOf : 5368- type : string 5369minLength : 1 5370x-max-utf8-bytes : 200 5371maxLength : 200 5372- type : 'null' 5373name : 5374type : string 5375minLength : 1 5376x-max-utf8-bytes : 100 5377maxLength : 100 5378phase : 5379type : string 5380enum : [ generating , running ] 5381intent : 5382type : string 5383enum : [ read , search , list , run , unknown ] 5384preview : 5385$ref : '#/components/schemas/ProgressPreview' 5386x-max-encoded-bytes : 8192 5387required : [ call_id , tool_call_id , name , phase , intent ] 5388additionalProperties : false 5389examples : 5390- call_id : progress-1 5391tool_call_id : null 5392name : python 5393phase : generating 5394intent : unknown 5395preview : 5396offset_scalars : 0 5397text : print("hello") 5398AgentRequest : 5399type : object 5400properties : 5401input_id : 5402$ref : '#/components/schemas/ID' 5403text : 5404type : string 5405maxLength : 512 5406required : [ input_id , text ] 5407additionalProperties : false 5408Activity : 5409type : object 5410properties : 5411lines : 5412type : array 5413items : 5414type : object 5415properties : 5416kind : 5417type : string 5418enum : [ assistant , thinking , tool , input , note , error ] 5419text : 5420type : string 5421x-max-utf8-bytes : 1024 5422maxLength : 256 5423required : [ kind , text ] 5424additionalProperties : false 5425maxItems : 12 5426output_scalars : 5427$ref : '#/components/schemas/Counter' 5428output_utf8_bytes : 5429$ref : '#/components/schemas/Counter' 5430observed_at : 5431$ref : '#/components/schemas/Timestamp' 5432latest_input : 5433anyOf : 5434- type : object 5435properties : 5436input_id : 5437$ref : '#/components/schemas/ID' 5438source : 5439type : string 5440enum : [ chat , agent , system ] 5441bytes : 5442$ref : '#/components/schemas/Counter' 5443required : [ input_id , source , bytes ] 5444additionalProperties : false 5445- type : 'null' 5446current_request : 5447anyOf : 5448- $ref : '#/components/schemas/AgentRequest' 5449- type : 'null' 5450latest_progress : 5451anyOf : 5452- type : string 5453maxLength : 512 5454- type : 'null' 5455latest_answer : 5456anyOf : 5457- type : object 5458properties : 5459message_id : 5460$ref : '#/components/schemas/ID' 5461bytes : 5462$ref : '#/components/schemas/Counter' 5463required : [ message_id , bytes ] 5464additionalProperties : false 5465- type : 'null' 5466x-max-encoded-bytes : 16384 5467required : [ lines , output_scalars , output_utf8_bytes , observed_at , latest_input , latest_answer ] 5468additionalProperties : false 5469SessionLocation : 5470type : object 5471description : Parsed workspace and daemon-resolved display label. Reading this metadata does not connect to the remote host. 5472properties : 5473host : 5474anyOf : 5475- type : string 5476maxLength : 4096 5477- type : 'null' 5478user : 5479anyOf : 5480- type : string 5481maxLength : 4096 5482- type : 'null' 5483path : 5484type : string 5485maxLength : 16384 5486label : 5487anyOf : 5488- type : string 5489maxLength : 8192 5490- type : 'null' 5491required : [ host , user , path , label ] 5492additionalProperties : false 5493SessionSummary : 5494type : object 5495properties : 5496id : 5497$ref : '#/components/schemas/ID' 5498name : 5499type : string 5500maxLength : 4096 5501automatic_name : 5502type : string 5503maxLength : 4096 5504location : 5505$ref : '#/components/schemas/SessionLocation' 5506workspace : 5507$ref : '#/components/schemas/Workspace' 5508parent_id : 5509anyOf : 5510- $ref : '#/components/schemas/ID' 5511- type : 'null' 5512root_id : 5513$ref : '#/components/schemas/ID' 5514address : 5515anyOf : 5516- type : string 5517maxLength : 512 5518- type : 'null' 5519depth : 5520type : integer 5521minimum : 0 5522maximum : 1000 5523closed : 5524type : boolean 5525created_at : 5526anyOf : 5527- $ref : '#/components/schemas/Timestamp' 5528- type : 'null' 5529activity_at : 5530anyOf : 5531- $ref : '#/components/schemas/Timestamp' 5532- type : 'null' 5533provider_profile : 5534anyOf : 5535- $ref : '#/components/schemas/ID' 5536- type : 'null' 5537model : 5538anyOf : 5539- $ref : '#/components/schemas/ID' 5540- type : 'null' 5541effort : 5542anyOf : 5543- type : string 5544maxLength : 100 5545- type : 'null' 5546status : 5547$ref : '#/components/schemas/SessionStatus' 5548preview : 5549$ref : '#/components/schemas/Preview' 5550preferences : 5551$ref : '#/components/schemas/SessionPreferences' 5552current_progress : 5553type : array 5554items : 5555$ref : '#/components/schemas/ToolProgress' 5556maxItems : 32 5557activity : 5558$ref : '#/components/schemas/Activity' 5559cursor : 5560anyOf : 5561- $ref : '#/components/schemas/Cursor' 5562- type : 'null' 5563description : Live fields and cursor are captured together. Extra response fields may be ignored. 5564required : [ id , name , automatic_name , workspace , location , parent_id , root_id , address , depth , closed , created_at , 5565activity_at , provider_profile , model , effort , status , preview , preferences , current_progress , 5566activity , cursor ] 5567SessionPage : 5568type : object 5569properties : 5570items : 5571type : array 5572items : 5573$ref : '#/components/schemas/SessionSummary' 5574maxItems : 200 5575next : 5576anyOf : 5577- $ref : '#/components/schemas/PageToken' 5578- type : 'null' 5579family : 5580type : object 5581properties : 5582root_id : 5583$ref : '#/components/schemas/ID' 5584revision : 5585$ref : '#/components/schemas/ID' 5586required : [ root_id , revision ] 5587additionalProperties : false 5588required : [ items , next ] 5589additionalProperties : false 5590examples : 5591- items : 5592- id : 01a0fcea-2b00-7000-8000-000000000001 5593name : New session 5594automatic_name : New session 5595workspace : /workspace/project 5596location : 5597host : null 5598user : null 5599path : /workspace/project 5600label : null 5601parent_id : null 5602root_id : 01a0fcea-2b00-7000-8000-000000000001 5603address : null 5604depth : 0 5605closed : false 5606created_at : '2026-10-02T14:00:00Z' 5607activity_at : '2026-10-02T14:00:00Z' 5608provider_profile : personal 5609model : example-model 5610effort : null 5611status : 5612phase : idle 5613run_id : null 5614interrupt_requested : false 5615blocking_reason : null 5616preview : 5617text : '' 5618transcript_count : 0 5619truncated : false 5620preferences : 5621pinned : false 5622pin_order : null 5623archived : false 5624opens : 0 5625current_progress : [] 5626active_output : [] 5627activity : 5628lines : [] 5629output_scalars : 0 5630output_utf8_bytes : 0 5631observed_at : '2026-10-02T14:00:00Z' 5632latest_input : null 5633latest_answer : null 5634cursor : 5635generation : J6kYj6IGcXyP3eMIp-WL3A 5636sequence : 0 5637next : null 5638SelectionOverrides : 5639type : object 5640properties : 5641extensions : 5642type : object 5643additionalProperties : 5644anyOf : 5645- type : boolean 5646- type : 'null' 5647skills : 5648type : object 5649additionalProperties : 5650anyOf : 5651- type : boolean 5652- type : 'null' 5653instructions : 5654type : object 5655additionalProperties : 5656anyOf : 5657- type : boolean 5658- type : 'null' 5659mcp : 5660type : object 5661additionalProperties : 5662anyOf : 5663- type : boolean 5664- type : 'null' 5665required : [ extensions , skills , instructions , mcp ] 5666additionalProperties : false 5667SelectionPatch : 5668type : object 5669properties : 5670extensions : 5671anyOf : 5672- type : object 5673additionalProperties : 5674anyOf : 5675- type : boolean 5676- type : 'null' 5677- type : 'null' 5678skills : 5679anyOf : 5680- type : object 5681additionalProperties : 5682anyOf : 5683- type : boolean 5684- type : 'null' 5685- type : 'null' 5686instructions : 5687anyOf : 5688- type : object 5689additionalProperties : 5690anyOf : 5691- type : boolean 5692- type : 'null' 5693- type : 'null' 5694mcp : 5695anyOf : 5696- type : object 5697additionalProperties : 5698anyOf : 5699- type : boolean 5700- type : 'null' 5701- type : 'null' 5702description : Null map entry clears that override. Null entire map clears all overrides of that kind. 5703additionalProperties : false 5704SessionSelection : 5705type : object 5706properties : 5707overrides : 5708$ref : '#/components/schemas/SelectionOverrides' 5709effective : 5710type : object 5711properties : 5712extensions : 5713type : object 5714additionalProperties : 5715type : boolean 5716skills : 5717type : object 5718additionalProperties : 5719type : boolean 5720instructions : 5721type : object 5722additionalProperties : 5723type : boolean 5724mcp : 5725type : object 5726additionalProperties : 5727type : boolean 5728required : [ extensions , skills , instructions , mcp ] 5729additionalProperties : false 5730required : [ overrides , effective ] 5731additionalProperties : false 5732SessionConfiguration : 5733type : object 5734properties : 5735id : 5736$ref : '#/components/schemas/ID' 5737name : 5738description : Explicit name. Null shows the automatic title for a root, or the family name for a child; the session representation carries the displayed name. 5739anyOf : 5740- type : string 5741maxLength : 4096 5742- type : 'null' 5743workspace : 5744$ref : '#/components/schemas/Workspace' 5745provider_profile : 5746anyOf : 5747- $ref : '#/components/schemas/ID' 5748- type : 'null' 5749model : 5750anyOf : 5751- $ref : '#/components/schemas/ID' 5752- type : 'null' 5753effort : 5754anyOf : 5755- type : string 5756maxLength : 100 5757- type : 'null' 5758preferences : 5759type : object 5760properties : 5761pinned : 5762type : boolean 5763pin_order : 5764anyOf : 5765- $ref : '#/components/schemas/Counter' 5766- type : 'null' 5767archived : 5768type : boolean 5769required : [ pinned , pin_order , archived ] 5770additionalProperties : false 5771selection : 5772$ref : '#/components/schemas/SelectionOverrides' 5773revision : 5774$ref : '#/components/schemas/ID' 5775family_revision : 5776$ref : '#/components/schemas/ID' 5777required : [ id , name , workspace , provider_profile , model , effort , preferences , selection , revision , 5778family_revision ] 5779additionalProperties : false 5780examples : 5781- id : 01a0fcea-2b00-7000-8000-000000000001 5782name : null 5783workspace : /workspace/project 5784provider_profile : personal 5785model : example-model 5786effort : null 5787preferences : 5788pinned : false 5789pin_order : null 5790archived : false 5791selection : 5792extensions : {} 5793skills : {} 5794instructions : {} 5795mcp : {} 5796revision : config-1 5797family_revision : family-1 5798SessionConfigurationResource : 5799type : object 5800properties : 5801url : 5802$ref : '#/components/schemas/ResourceURL' 5803etag : 5804$ref : '#/components/schemas/ETag' 5805value : 5806$ref : '#/components/schemas/SessionConfiguration' 5807required : [ url , etag , value ] 5808additionalProperties : false 5809SessionPatch : 5810type : object 5811properties : 5812name : 5813anyOf : 5814- type : string 5815maxLength : 4096 5816- type : 'null' 5817provider_profile : 5818$ref : '#/components/schemas/ID' 5819model : 5820$ref : '#/components/schemas/ID' 5821effort : 5822anyOf : 5823- type : string 5824maxLength : 100 5825- type : 'null' 5826preferences : 5827$ref : '#/components/schemas/PreferencePatch' 5828selection : 5829$ref : '#/components/schemas/SelectionPatch' 5830catalog_revision : 5831$ref : '#/components/schemas/ID' 5832description : Skill and instruction changes require catalog_revision. All fields validate and commit 5833together. 5834additionalProperties : false 5835examples : 5836- selection : 5837extensions : 5838browser : null 5839skills : 5840candidate-1 : false 5841catalog_revision : discovery-1 5842WorkspaceMoveRequest : 5843type : object 5844properties : 5845workspace : 5846$ref : '#/components/schemas/Workspace' 5847family_revision : 5848$ref : '#/components/schemas/ID' 5849required : [ workspace , family_revision ] 5850additionalProperties : false 5851examples : 5852- workspace : /workspace/other-project 5853family_revision : family-1 5854SessionChangeRequest : 5855oneOf : 5856- $ref : '#/components/schemas/SessionPatch' 5857- $ref : '#/components/schemas/WorkspaceMoveRequest' 5858NewSessionRequest : 5859type : object 5860properties : 5861kind : 5862const : new 5863workspace : 5864$ref : '#/components/schemas/Workspace' 5865name : 5866anyOf : 5867- type : string 5868maxLength : 4096 5869- type : 'null' 5870provider_profile : 5871anyOf : 5872- $ref : '#/components/schemas/ID' 5873- type : 'null' 5874model : 5875anyOf : 5876- $ref : '#/components/schemas/ID' 5877- type : 'null' 5878effort : 5879anyOf : 5880- type : string 5881maxLength : 100 5882- type : 'null' 5883required : [ kind , workspace ] 5884additionalProperties : false 5885examples : 5886- kind : new 5887workspace : /workspace/project 5888NewSessionIntent : 5889type : object 5890properties : 5891kind : 5892const : new 5893workspace : 5894$ref : '#/components/schemas/Workspace' 5895name : 5896anyOf : 5897- type : string 5898maxLength : 4096 5899- type : 'null' 5900provider_profile : 5901anyOf : 5902- $ref : '#/components/schemas/ID' 5903- type : 'null' 5904model : 5905anyOf : 5906- $ref : '#/components/schemas/ID' 5907- type : 'null' 5908effort : 5909anyOf : 5910- type : string 5911maxLength : 100 5912- type : 'null' 5913required : [ kind , workspace , name , provider_profile , model , effort ] 5914additionalProperties : false 5915ForkSessionRequest : 5916type : object 5917properties : 5918kind : 5919const : fork 5920source_session_id : 5921$ref : '#/components/schemas/ID' 5922checkpoint_id : 5923$ref : '#/components/schemas/ID' 5924name : 5925anyOf : 5926- type : string 5927maxLength : 4096 5928- type : 'null' 5929required : [ kind , source_session_id , checkpoint_id ] 5930additionalProperties : false 5931ForkSessionIntent : 5932type : object 5933properties : 5934kind : 5935const : fork 5936source_session_id : 5937$ref : '#/components/schemas/ID' 5938checkpoint_id : 5939$ref : '#/components/schemas/ID' 5940name : 5941anyOf : 5942- type : string 5943maxLength : 4096 5944- type : 'null' 5945required : [ kind , source_session_id , checkpoint_id , name ] 5946additionalProperties : false 5947ChildSessionRequest : 5948type : object 5949properties : 5950kind : 5951const : child 5952parent_id : 5953$ref : '#/components/schemas/ID' 5954address : 5955type : string 5956minLength : 1 5957maxLength : 512 5958name : 5959type : string 5960minLength : 1 5961maxLength : 4096 5962initial_input_id : 5963$ref : '#/components/schemas/UUIDv7' 5964task : 5965type : string 5966minLength : 1 5967maxLength : 32768 5968model : 5969anyOf : 5970- $ref : '#/components/schemas/ID' 5971- type : 'null' 5972effort : 5973anyOf : 5974- type : string 5975maxLength : 100 5976- type : 'null' 5977required : [ kind , parent_id , address , name , initial_input_id , task ] 5978additionalProperties : false 5979ChildSessionIntent : 5980type : object 5981properties : 5982kind : 5983const : child 5984parent_id : 5985$ref : '#/components/schemas/ID' 5986address : 5987type : string 5988minLength : 1 5989maxLength : 512 5990name : 5991type : string 5992minLength : 1 5993maxLength : 4096 5994initial_input_id : 5995$ref : '#/components/schemas/UUIDv7' 5996task : 5997type : string 5998minLength : 1 5999maxLength : 32768 6000model : 6001anyOf : 6002- $ref : '#/components/schemas/ID' 6003- type : 'null' 6004effort : 6005anyOf : 6006- type : string 6007maxLength : 100 6008- type : 'null' 6009required : [ kind , parent_id , address , name , initial_input_id , task , model , effort ] 6010additionalProperties : false 6011SessionCreationRequest : 6012oneOf : 6013- $ref : '#/components/schemas/NewSessionRequest' 6014- $ref : '#/components/schemas/ForkSessionRequest' 6015- $ref : '#/components/schemas/ChildSessionRequest' 6016Creation : 6017type : object 6018properties : 6019submitted : 6020oneOf : 6021- $ref : '#/components/schemas/NewSessionIntent' 6022- $ref : '#/components/schemas/ForkSessionIntent' 6023- $ref : '#/components/schemas/ChildSessionIntent' 6024resolved : 6025type : object 6026properties : 6027workspace : 6028$ref : '#/components/schemas/Workspace' 6029provider_profile : 6030anyOf : 6031- $ref : '#/components/schemas/ID' 6032- type : 'null' 6033model : 6034anyOf : 6035- $ref : '#/components/schemas/ID' 6036- type : 'null' 6037effort : 6038anyOf : 6039- type : string 6040maxLength : 100 6041- type : 'null' 6042required : [ workspace , provider_profile , model , effort ] 6043additionalProperties : false 6044required : [ submitted , resolved ] 6045additionalProperties : false 6046CreationDecision : 6047type : object 6048properties : 6049kind : 6050const : creation 6051session_id : 6052$ref : '#/components/schemas/ID' 6053admission : 6054type : string 6055enum : [ accepted , rejected ] 6056http_status : 6057type : integer 6058minimum : 200 6059maximum : 599 6060creation : 6061anyOf : 6062- $ref : '#/components/schemas/Creation' 6063- type : 'null' 6064decided_at : 6065anyOf : 6066- $ref : '#/components/schemas/Timestamp' 6067- type : 'null' 6068deleted_at : 6069anyOf : 6070- $ref : '#/components/schemas/Timestamp' 6071- type : 'null' 6072required : [ kind , session_id , admission , http_status , creation , decided_at , deleted_at ] 6073additionalProperties : false 6074WorkspaceChange : 6075type : object 6076properties : 6077desired : 6078$ref : '#/components/schemas/Workspace' 6079active : 6080$ref : '#/components/schemas/Workspace' 6081state : 6082type : string 6083enum : [ deferred , applying ] 6084revision : 6085$ref : '#/components/schemas/ID' 6086required : [ desired , active , state , revision ] 6087additionalProperties : false 6088QuarantineDiagnostic : 6089type : object 6090properties : 6091id : 6092$ref : '#/components/schemas/ID' 6093reason : 6094$ref : '#/components/schemas/SafeReason' 6095required : [ id , reason ] 6096additionalProperties : false 6097Composition : 6098type : object 6099properties : 6100desired_revision : 6101$ref : '#/components/schemas/ID' 6102loaded_revision : 6103anyOf : 6104- $ref : '#/components/schemas/ID' 6105- type : 'null' 6106needs_reload : 6107type : boolean 6108dependencies : 6109type : object 6110additionalProperties : 6111type : array 6112items : 6113$ref : '#/components/schemas/ID' 6114maxItems : 200 6115quarantine : 6116type : array 6117items : 6118$ref : '#/components/schemas/QuarantineDiagnostic' 6119maxItems : 200 6120availability : 6121type : object 6122additionalProperties : 6123type : boolean 6124required : [ desired_revision , loaded_revision , needs_reload , dependencies , quarantine , availability ] 6125additionalProperties : false 6126JobCollection : 6127type : object 6128properties : 6129items : 6130type : array 6131items : 6132$ref : '#/components/schemas/KernelJob' 6133maxItems : 100 6134live_job_count : 6135$ref : '#/components/schemas/Counter' 6136page : 6137$ref : '#/components/schemas/PageDescriptor' 6138required : [ items , live_job_count , page ] 6139additionalProperties : false 6140examples : 6141- items : [] 6142live_job_count : 0 6143page : 6144title : jobs 6145empty_state : no background jobs running 6146rows : [] 6147glance : null 6148actions : [] 6149summary : 0 background jobs running 6150JobStop : 6151type : object 6152properties : 6153stopped : 6154$ref : '#/components/schemas/ID' 6155required : [ stopped ] 6156additionalProperties : false 6157examples : 6158- stopped : job-1 6159KernelJob : 6160type : object 6161properties : 6162id : 6163$ref : '#/components/schemas/ID' 6164pid : 6165anyOf : 6166- $ref : '#/components/schemas/Counter' 6167- type : 'null' 6168command : 6169type : string 6170maxLength : 4096 6171started_at : 6172$ref : '#/components/schemas/Counter' 6173description : Wall-clock milliseconds since the epoch when the owner recorded the 6174job. Zero when unknown, which clients treat as settled work. 6175required : [ id , pid , command , started_at ] 6176additionalProperties : false 6177Kernel : 6178type : object 6179properties : 6180state : 6181type : string 6182enum : [ none , booting , attached , reattaching , lost ] 6183stage : 6184anyOf : 6185- type : string 6186enum : [ staging , starting ] 6187- type : 'null' 6188build : 6189anyOf : 6190- type : string 6191maxLength : 512 6192- type : 'null' 6193stale : 6194type : boolean 6195staleness_reasons : 6196type : array 6197items : 6198$ref : '#/components/schemas/SafeReason' 6199maxItems : 100 6200running_jobs : 6201description : Up to 100 observed live jobs, ordered by ID. Null when the kernel owner is unavailable. The count may exceed this list. 6202anyOf : 6203- type : array 6204items : 6205$ref : '#/components/schemas/KernelJob' 6206maxItems : 100 6207- type : 'null' 6208live_job_count : 6209description : Observed owned jobs. Null while booting or when the kernel owner is lost. 6210anyOf : 6211- $ref : '#/components/schemas/Counter' 6212- type : 'null' 6213instance_id : 6214anyOf : 6215- $ref : '#/components/schemas/ID' 6216- type : 'null' 6217required : [ state , stage , build , stale , staleness_reasons , live_job_count , running_jobs , instance_id ] 6218additionalProperties : false 6219Usage : 6220type : object 6221properties : 6222model : 6223anyOf : 6224- $ref : '#/components/schemas/ID' 6225- type : 'null' 6226observed_at : 6227anyOf : 6228- $ref : '#/components/schemas/Timestamp' 6229- type : 'null' 6230prompt_tokens : 6231anyOf : 6232- $ref : '#/components/schemas/Counter' 6233- type : 'null' 6234cached_prompt_tokens : 6235anyOf : 6236- $ref : '#/components/schemas/Counter' 6237- type : 'null' 6238cache_write_tokens : 6239anyOf : 6240- $ref : '#/components/schemas/Counter' 6241- type : 'null' 6242completion_tokens : 6243anyOf : 6244- $ref : '#/components/schemas/Counter' 6245- type : 'null' 6246total_tokens : 6247anyOf : 6248- $ref : '#/components/schemas/Counter' 6249- type : 'null' 6250elapsed_ms : 6251anyOf : 6252- type : number 6253minimum : 0 6254- type : 'null' 6255tokens_per_second : 6256anyOf : 6257- type : number 6258minimum : 0 6259- type : 'null' 6260context_window_tokens : 6261anyOf : 6262- $ref : '#/components/schemas/Counter' 6263- type : 'null' 6264cache_ttl_seconds : 6265anyOf : 6266- $ref : '#/components/schemas/Counter' 6267- type : 'null' 6268cache_fade : 6269type : array 6270items : 6271type : object 6272properties : 6273at : 6274$ref : '#/components/schemas/Timestamp' 6275cached_tokens : 6276anyOf : 6277- $ref : '#/components/schemas/Counter' 6278- type : 'null' 6279required : [ at , cached_tokens ] 6280additionalProperties : false 6281maxItems : 200 6282required : [ model , observed_at , prompt_tokens , cached_prompt_tokens , cache_write_tokens , completion_tokens , 6283total_tokens , elapsed_ms , tokens_per_second , context_window_tokens , cache_ttl_seconds , cache_fade ] 6284additionalProperties : false 6285PendingInput : 6286type : object 6287properties : 6288id : 6289$ref : '#/components/schemas/ID' 6290kind : 6291type : string 6292enum : [ message , continue , skill , command ] 6293preview : 6294$ref : '#/components/schemas/Preview' 6295accepted_at : 6296$ref : '#/components/schemas/Timestamp' 6297acceptance_order : 6298$ref : '#/components/schemas/Counter' 6299delivery : 6300const : pending 6301blocking_reason : 6302anyOf : 6303- $ref : '#/components/schemas/SafeReason' 6304- type : 'null' 6305required : [ id , kind , preview , accepted_at , acceptance_order , delivery , blocking_reason ] 6306additionalProperties : false 6307Glance : 6308type : object 6309properties : 6310extension : 6311$ref : '#/components/schemas/ID' 6312title : 6313type : string 6314maxLength : 256 6315rows : 6316type : array 6317items : 6318$ref : '#/components/schemas/PageRow' 6319maxItems : 12 6320url : 6321$ref : '#/components/schemas/ResourceURL' 6322data : 6323$ref : '#/components/schemas/DynamicJSON' 6324x-max-encoded-bytes : 8192 6325required : [ extension , title , rows , url ] 6326additionalProperties : false 6327Session : 6328allOf : 6329- $ref : '#/components/schemas/SessionSummary' 6330- type : object 6331properties : 6332creation : 6333description : Null only for stored sessions that predate immutable creation provenance. All newly admitted creations have provenance. 6334anyOf : 6335- $ref : '#/components/schemas/Creation' 6336- type : 'null' 6337revision : 6338$ref : '#/components/schemas/ID' 6339family_revision : 6340$ref : '#/components/schemas/ID' 6341configuration_resource : 6342$ref : '#/components/schemas/SessionConfigurationResource' 6343workspace_change : 6344anyOf : 6345- $ref : '#/components/schemas/WorkspaceChange' 6346- type : 'null' 6347selection : 6348$ref : '#/components/schemas/SessionSelection' 6349composition : 6350$ref : '#/components/schemas/Composition' 6351kernel : 6352$ref : '#/components/schemas/Kernel' 6353pending_inputs : 6354type : array 6355items : 6356$ref : '#/components/schemas/PendingInput' 6357maxItems : 32 6358input_order : 6359$ref : '#/components/schemas/Counter' 6360usage : 6361$ref : '#/components/schemas/Usage' 6362active_output : 6363type : array 6364items : 6365$ref : '#/components/schemas/ActiveOutput' 6366maxItems : 256 6367history : 6368$ref : '#/components/schemas/HistoryPage' 6369glances : 6370type : array 6371items : 6372$ref : '#/components/schemas/Glance' 6373maxItems : 16 6374required : [ creation , revision , family_revision , configuration_resource , workspace_change , selection , 6375composition , kernel , pending_inputs , input_order , usage , history , glances , active_output ] 6376unevaluatedProperties : false 6377x-max-encoded-bytes : 1048576 6378examples : 6379- id : 01a0fcea-2b00-7000-8000-000000000001 6380name : New session 6381automatic_name : New session 6382workspace : /workspace/project 6383location : 6384host : null 6385user : null 6386path : /workspace/project 6387label : null 6388parent_id : null 6389root_id : 01a0fcea-2b00-7000-8000-000000000001 6390address : null 6391depth : 0 6392closed : false 6393created_at : '2026-10-02T14:00:00Z' 6394activity_at : '2026-10-02T14:00:00Z' 6395provider_profile : personal 6396model : example-model 6397effort : null 6398status : 6399phase : idle 6400run_id : null 6401interrupt_requested : false 6402blocking_reason : null 6403preview : 6404text : '' 6405transcript_count : 0 6406truncated : false 6407preferences : 6408pinned : false 6409pin_order : null 6410archived : false 6411opens : 0 6412current_progress : [] 6413active_output : [] 6414activity : 6415lines : [] 6416output_scalars : 0 6417output_utf8_bytes : 0 6418observed_at : '2026-10-02T14:00:00Z' 6419latest_input : null 6420latest_answer : null 6421cursor : 6422generation : J6kYj6IGcXyP3eMIp-WL3A 6423sequence : 0 6424creation : 6425submitted : 6426kind : new 6427workspace : /workspace/project 6428name : null 6429provider_profile : null 6430model : null 6431effort : null 6432resolved : 6433workspace : /workspace/project 6434provider_profile : personal 6435model : example-model 6436effort : null 6437revision : config-1 6438family_revision : family-1 6439configuration_resource : 6440url : /sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration 6441etag : '"session-config-1"' 6442value : 6443id : 01a0fcea-2b00-7000-8000-000000000001 6444name : New session 6445workspace : /workspace/project 6446provider_profile : personal 6447model : example-model 6448effort : null 6449preferences : 6450pinned : false 6451pin_order : null 6452archived : false 6453selection : 6454extensions : {} 6455skills : {} 6456instructions : {} 6457mcp : {} 6458revision : config-1 6459family_revision : family-1 6460workspace_change : null 6461selection : 6462overrides : 6463extensions : {} 6464skills : {} 6465instructions : {} 6466mcp : {} 6467effective : 6468extensions : {} 6469skills : {} 6470instructions : {} 6471mcp : {} 6472composition : 6473desired_revision : composition-1 6474loaded_revision : null 6475needs_reload : true 6476dependencies : {} 6477quarantine : [] 6478availability : {} 6479kernel : 6480instance_id : null 6481state : none 6482stage : null 6483build : null 6484stale : false 6485staleness_reasons : [] 6486live_job_count : 0 6487running_jobs : [] 6488pending_inputs : [] 6489input_order : 0 6490usage : 6491model : null 6492observed_at : null 6493prompt_tokens : null 6494cached_prompt_tokens : null 6495cache_write_tokens : null 6496completion_tokens : null 6497total_tokens : null 6498elapsed_ms : null 6499tokens_per_second : null 6500context_window_tokens : null 6501cache_ttl_seconds : null 6502cache_fade : [] 6503history : 6504items : [] 6505older : null 6506newer : null 6507high_water : 0 6508glances : [] 6509SessionRead : 6510oneOf : 6511- $ref : '#/components/schemas/Session' 6512- $ref : '#/components/schemas/SessionConfiguration' 6513SessionChange : 6514type : object 6515properties : 6516resource : 6517$ref : '#/components/schemas/SessionConfigurationResource' 6518session : 6519$ref : '#/components/schemas/Session' 6520move : 6521anyOf : 6522- type : object 6523properties : 6524applied_count : 6525$ref : '#/components/schemas/Counter' 6526deferred_count : 6527$ref : '#/components/schemas/Counter' 6528applied_ids : 6529type : array 6530items : 6531$ref : '#/components/schemas/ID' 6532maxItems : 200 6533deferred_ids : 6534type : array 6535items : 6536$ref : '#/components/schemas/ID' 6537maxItems : 200 6538truncated : 6539type : boolean 6540warnings : 6541$ref : '#/components/schemas/Warnings' 6542required : [ applied_count , deferred_count , applied_ids , deferred_ids , truncated , warnings ] 6543additionalProperties : false 6544- type : 'null' 6545required : [ resource , session , move ] 6546additionalProperties : false 6547Visit : 6548type : object 6549properties : 6550visit_id : 6551$ref : '#/components/schemas/ID' 6552session_id : 6553$ref : '#/components/schemas/ID' 6554opens : 6555$ref : '#/components/schemas/Counter' 6556required : [ visit_id , session_id , opens ] 6557additionalProperties : false 6558SessionDeletion : 6559type : object 6560properties : 6561state : 6562type : string 6563enum : [ complete , partial ] 6564deleted_count : 6565$ref : '#/components/schemas/Counter' 6566remaining_count : 6567$ref : '#/components/schemas/Counter' 6568deleted_ids : 6569type : array 6570items : 6571$ref : '#/components/schemas/ID' 6572maxItems : 200 6573remaining : 6574type : array 6575items : 6576type : object 6577properties : 6578id : 6579$ref : '#/components/schemas/ID' 6580reason : 6581$ref : '#/components/schemas/SafeReason' 6582required : [ id , reason ] 6583additionalProperties : false 6584maxItems : 200 6585truncated : 6586type : boolean 6587description : Counts cover the complete captured operation. ID lists are bounded summaries, never 6588false completion. Refresh the authoritative family or known tombstones if truncated; deletion 6589is never repeated to page a result. 6590required : [ state , deleted_count , remaining_count , deleted_ids , remaining , truncated ] 6591additionalProperties : false 6592ImageUpload : 6593type : object 6594properties : 6595mime_type : 6596type : string 6597enum : [ image/png , image/jpeg , image/gif , image/webp ] 6598data : 6599type : string 6600contentEncoding : base64 6601description : Strict base64; decoded dimensions and provider constraints are validated before admission. 6602required : [ mime_type , data ] 6603additionalProperties : false 6604MessageInputRequest : 6605type : object 6606properties : 6607kind : 6608const : message 6609text : 6610type : string 6611maxLength : 1048576 6612images : 6613type : array 6614description : Attached in order; the text's numbered image markers say where each was attached. 6615items : 6616$ref : '#/components/schemas/ImageUpload' 6617maxItems : 10 6618pastes : 6619type : array 6620description : Pasted text the text marks by number; a long one is saved to a file the model reads. 6621items : 6622type : string 6623maxItems : 20 6624client_id : 6625type : string 6626maxLength : 512 6627required : [ kind , text ] 6628additionalProperties : false 6629anyOf : 6630- properties : 6631text : 6632pattern : \S 6633- required : [ images ] 6634properties : 6635images : 6636minItems : 1 6637examples : 6638- kind : message 6639text : Fix the parser. 6640client_id : draft-1 6641ContinueInputRequest : 6642type : object 6643properties : 6644kind : 6645const : continue 6646client_id : 6647type : string 6648maxLength : 512 6649required : [ kind ] 6650additionalProperties : false 6651SkillInputRequest : 6652type : object 6653properties : 6654kind : 6655const : skill 6656candidate_id : 6657$ref : '#/components/schemas/ID' 6658catalog_revision : 6659$ref : '#/components/schemas/ID' 6660arguments : 6661type : string 6662maxLength : 1048576 6663client_id : 6664type : string 6665maxLength : 512 6666required : [ kind , candidate_id , catalog_revision , arguments ] 6667additionalProperties : false 6668CommandInputRequest : 6669type : object 6670properties : 6671kind : 6672const : command 6673command_id : 6674$ref : '#/components/schemas/ID' 6675arguments : 6676$ref : '#/components/schemas/DynamicJSON' 6677client_id : 6678type : string 6679maxLength : 512 6680required : [ kind , command_id , arguments ] 6681additionalProperties : false 6682InputRequest : 6683oneOf : 6684- $ref : '#/components/schemas/MessageInputRequest' 6685- $ref : '#/components/schemas/ContinueInputRequest' 6686- $ref : '#/components/schemas/SkillInputRequest' 6687- $ref : '#/components/schemas/CommandInputRequest' 6688x-max-encoded-bytes : 72200000 6689Turn : 6690type : object 6691properties : 6692id : 6693$ref : '#/components/schemas/ID' 6694state : 6695type : string 6696enum : [ running , completed , interrupted , failed , abandoned ] 6697started_at : 6698$ref : '#/components/schemas/Timestamp' 6699ended_at : 6700anyOf : 6701- $ref : '#/components/schemas/Timestamp' 6702- type : 'null' 6703outcome : 6704anyOf : 6705- $ref : '#/components/schemas/SafeReason' 6706- type : 'null' 6707required : [ id , state , started_at , ended_at , outcome ] 6708additionalProperties : false 6709Input : 6710type : object 6711properties : 6712id : 6713$ref : '#/components/schemas/ID' 6714session_id : 6715$ref : '#/components/schemas/ID' 6716kind : 6717type : string 6718enum : [ message , continue , skill , command ] 6719admission : 6720type : string 6721enum : [ accepted , rejected ] 6722http_status : 6723type : integer 6724minimum : 200 6725maximum : 599 6726problem : 6727anyOf : 6728- $ref : '#/components/schemas/AdmissionProblem' 6729- type : 'null' 6730accepted_at : 6731anyOf : 6732- $ref : '#/components/schemas/Timestamp' 6733- type : 'null' 6734acceptance_order : 6735anyOf : 6736- $ref : '#/components/schemas/Counter' 6737- type : 'null' 6738delivery : 6739anyOf : 6740- type : string 6741enum : [ pending , committed , cancelled ] 6742- type : 'null' 6743blocking_reason : 6744anyOf : 6745- $ref : '#/components/schemas/SafeReason' 6746- type : 'null' 6747transcript_position : 6748anyOf : 6749- $ref : '#/components/schemas/Counter' 6750- type : 'null' 6751turn : 6752anyOf : 6753- $ref : '#/components/schemas/Turn' 6754- type : 'null' 6755client_id : 6756anyOf : 6757- type : string 6758maxLength : 512 6759- type : 'null' 6760required : [ id , session_id , kind , admission , http_status , problem , accepted_at , acceptance_order , 6761delivery , blocking_reason , transcript_position , turn , client_id ] 6762additionalProperties : false 6763allOf : 6764- if : 6765properties : 6766admission : 6767const : rejected 6768then : 6769properties : 6770delivery : 6771type : 'null' 6772accepted_at : 6773type : 'null' 6774acceptance_order : 6775type : 'null' 6776turn : 6777type : 'null' 6778http_status : 6779type : integer 6780minimum : 400 6781maximum : 599 6782problem : 6783$ref : '#/components/schemas/AdmissionProblem' 6784else : 6785properties : 6786delivery : 6787type : string 6788enum : [ pending , committed , cancelled ] 6789accepted_at : 6790$ref : '#/components/schemas/Timestamp' 6791acceptance_order : 6792type : integer 6793minimum : 1 6794maximum : 9007199254740991 6795http_status : 6796const : 202 6797problem : 6798type : 'null' 6799examples : 6800- id : 01a0fcea-2b00-7000-8000-000000000002 6801session_id : 01a0fcea-2b00-7000-8000-000000000001 6802kind : message 6803admission : accepted 6804http_status : 202 6805problem : null 6806accepted_at : '2026-10-02T14:00:00Z' 6807acceptance_order : 1 6808delivery : pending 6809blocking_reason : null 6810transcript_position : null 6811turn : null 6812client_id : draft-1 6813InputDecision : 6814type : object 6815properties : 6816kind : 6817const : input 6818input : 6819$ref : '#/components/schemas/Input' 6820required : [ kind , input ] 6821additionalProperties : false 6822InputCancellation : 6823type : object 6824properties : 6825input : 6826$ref : '#/components/schemas/Input' 6827result : 6828type : string 6829enum : [ cancelled , interrupt_requested , shared_running , not_pending ] 6830required : [ input , result ] 6831additionalProperties : false 6832InterruptRequest : 6833type : object 6834properties : 6835run_id : 6836anyOf : 6837- $ref : '#/components/schemas/ID' 6838- type : 'null' 6839through_input_order : 6840$ref : '#/components/schemas/Counter' 6841required : [ run_id , through_input_order ] 6842additionalProperties : false 6843Interruption : 6844type : object 6845properties : 6846run_id : 6847anyOf : 6848- $ref : '#/components/schemas/ID' 6849- type : 'null' 6850state : 6851type : string 6852enum : [ requested , already_ended ] 6853cancelled_input_ids : 6854type : array 6855items : 6856$ref : '#/components/schemas/ID' 6857maxItems : 32 6858warnings : 6859$ref : '#/components/schemas/Warnings' 6860required : [ run_id , state , cancelled_input_ids , warnings ] 6861additionalProperties : false 6862ToolActivity : 6863type : object 6864properties : 6865kind : 6866type : string 6867enum : [ read , search , list , run , web ] 6868target : 6869type : string 6870maxLength : 1000 6871detail : 6872type : string 6873maxLength : 16000 6874description : What the person watching sees of the result, as markdown; a web search's answer and sources. 6875required : [ kind , target ] 6876additionalProperties : false 6877FileDiff : 6878type : object 6879properties : 6880path : 6881type : string 6882maxLength : 1000 6883kind : 6884const : diff 6885diff : 6886type : string 6887maxLength : 16000 6888added : 6889$ref : '#/components/schemas/Counter' 6890removed : 6891$ref : '#/components/schemas/Counter' 6892required : [ path , kind , diff , added , removed ] 6893additionalProperties : false 6894FileUnavailable : 6895type : object 6896properties : 6897path : 6898type : string 6899maxLength : 1000 6900kind : 6901const : unavailable 6902reason : 6903type : string 6904maxLength : 1000 6905required : [ path , kind , reason ] 6906additionalProperties : false 6907ToolTrace : 6908type : object 6909properties : 6910activities : 6911type : array 6912items : 6913$ref : '#/components/schemas/ToolActivity' 6914maxItems : 64 6915changes : 6916type : array 6917items : 6918oneOf : 6919- $ref : '#/components/schemas/FileDiff' 6920- $ref : '#/components/schemas/FileUnavailable' 6921maxItems : 16 6922truncated : 6923type : boolean 6924required : [ activities , changes , truncated ] 6925additionalProperties : false 6926ActiveOutput : 6927type : object 6928properties : 6929message_id : 6930$ref : '#/components/schemas/ID' 6931run_id : 6932$ref : '#/components/schemas/ID' 6933kind : 6934type : string 6935enum : [ text , thinking ] 6936bytes : 6937$ref : '#/components/schemas/Counter' 6938elapsed_ms : 6939type : [ integer , 'null' ] 6940minimum : 0 6941text : 6942type : [ string , 'null' ] 6943reference : 6944anyOf : 6945- $ref : '#/components/schemas/ContentReference' 6946- type : 'null' 6947required : [ message_id , run_id , kind , bytes , elapsed_ms , text , reference ] 6948additionalProperties : false 6949description : Ordered unfinished output captured with the session cursor. Exactly one of text or reference is non-null. References retain a fixed byte cutoff through their short snapshot lease. A run retains at most 64 MiB of unfinished output across at most 256 descriptors. Inline output is limited to 64 KiB encoded; larger content uses references. 6950ContentReference : 6951type : object 6952properties : 6953url : 6954$ref : '#/components/schemas/ResourceURL' 6955field : 6956type : string 6957minLength : 1 6958maxLength : 256 6959bytes : 6960$ref : '#/components/schemas/Counter' 6961required : [ url , field , bytes ] 6962additionalProperties : false 6963ImageMetadata : 6964type : object 6965properties : 6966mime_type : 6967type : string 6968maxLength : 100 6969width : 6970type : integer 6971minimum : 1 6972maximum : 9007199254740991 6973height : 6974type : integer 6975minimum : 1 6976maximum : 9007199254740991 6977original_bytes : 6978$ref : '#/components/schemas/Counter' 6979reference : 6980$ref : '#/components/schemas/ContentReference' 6981description : Its url is the image resource, which serves the decoded bytes. 6982required : [ mime_type , width , height , original_bytes , reference ] 6983additionalProperties : false 6984TextContent : 6985type : object 6986properties : 6987kind : 6988const : text 6989text : 6990type : string 6991maxLength : 262144 6992required : [ kind , text ] 6993additionalProperties : false 6994JSONContent : 6995type : object 6996properties : 6997kind : 6998const : json 6999field : 7000type : string 7001maxLength : 256 7002value : 7003$ref : '#/components/schemas/DynamicJSON' 7004required : [ kind , field , value ] 7005additionalProperties : false 7006ImageContent : 7007type : object 7008properties : 7009kind : 7010const : image 7011image : 7012$ref : '#/components/schemas/ImageMetadata' 7013required : [ kind , image ] 7014additionalProperties : false 7015TraceContent : 7016type : object 7017properties : 7018kind : 7019const : trace 7020trace : 7021$ref : '#/components/schemas/ToolTrace' 7022required : [ kind , trace ] 7023additionalProperties : false 7024ReferenceContent : 7025type : object 7026properties : 7027kind : 7028const : reference 7029reference : 7030$ref : '#/components/schemas/ContentReference' 7031required : [ kind , reference ] 7032additionalProperties : false 7033HistoryMail : 7034type : object 7035properties : 7036mail_id : 7037$ref : '#/components/schemas/ID' 7038sender_session_id : 7039anyOf : 7040- $ref : '#/components/schemas/ID' 7041- type : 'null' 7042sender_label : 7043type : string 7044kind : 7045type : string 7046enum : [ task , message , result , unreviewed , webhook ] 7047required : [ mail_id , sender_session_id , sender_label , kind ] 7048additionalProperties : false 7049HistoryEntry : 7050type : object 7051properties : 7052id : 7053$ref : '#/components/schemas/ID' 7054position : 7055$ref : '#/components/schemas/Counter' 7056kind : 7057type : string 7058enum : [ user , assistant , thinking , tool_call , tool_result , note , continuation , compaction , image_fit ] 7059turn_type : 7060type : string 7061enum : [ user , agent , webhook , scheduled , continue ] 7062: 7063anyOf : 7064- $ref : '#/components/schemas/HistoryMail' 7065- type : 'null' 7066turn_id : 7067anyOf : 7068- $ref : '#/components/schemas/ID' 7069- type : 'null' 7070input_id : 7071anyOf : 7072- $ref : '#/components/schemas/ID' 7073- type : 'null' 7074created_at : 7075anyOf : 7076- $ref : '#/components/schemas/Timestamp' 7077- type : 'null' 7078content : 7079type : array 7080items : 7081oneOf : 7082- $ref : '#/components/schemas/TextContent' 7083- $ref : '#/components/schemas/JSONContent' 7084- $ref : '#/components/schemas/ImageContent' 7085- $ref : '#/components/schemas/TraceContent' 7086- $ref : '#/components/schemas/ReferenceContent' 7087maxItems : 200 7088checkpoint_id : 7089anyOf : 7090- $ref : '#/components/schemas/ID' 7091- type : 'null' 7092content_complete : 7093type : boolean 7094tool : 7095anyOf : 7096- type : object 7097properties : 7098name : 7099type : string 7100maxLength : 100 7101tool_call_id : 7102$ref : '#/components/schemas/ID' 7103progress_call_id : 7104anyOf : 7105- $ref : '#/components/schemas/ID' 7106- type : 'null' 7107required : [ name , tool_call_id , progress_call_id ] 7108additionalProperties : false 7109- type : 'null' 7110thinking_duration_ms : 7111description : Observed thinking duration, when recorded. 7112anyOf : 7113- $ref : '#/components/schemas/Counter' 7114- type : 'null' 7115required : [ id , position , kind , turn_id , input_id , created_at , content , checkpoint_id , content_complete , 7116tool ] 7117additionalProperties : false 7118HistoryPage : 7119type : object 7120properties : 7121items : 7122type : array 7123items : 7124$ref : '#/components/schemas/HistoryEntry' 7125maxItems : 200 7126older : 7127anyOf : 7128- $ref : '#/components/schemas/PageToken' 7129- type : 'null' 7130newer : 7131anyOf : 7132- $ref : '#/components/schemas/PageToken' 7133- type : 'null' 7134high_water : 7135$ref : '#/components/schemas/Counter' 7136x-max-content-bytes : 262144 7137required : [ items , older , newer , high_water ] 7138additionalProperties : false 7139examples : 7140- items : [] 7141older : null 7142newer : null 7143high_water : 0 7144Checkpoint : 7145type : object 7146properties : 7147position : 7148$ref : '#/components/schemas/Counter' 7149checkpoint_id : 7150$ref : '#/components/schemas/ID' 7151title : 7152type : string 7153maxLength : 4096 7154turn_type : 7155type : string 7156enum : [ user , continue , agent , scheduled , webhook ] 7157preview : 7158$ref : '#/components/schemas/Preview' 7159required : [ position , checkpoint_id , title , turn_type , preview ] 7160additionalProperties : false 7161CheckpointPage : 7162type : object 7163properties : 7164items : 7165type : array 7166items : 7167$ref : '#/components/schemas/Checkpoint' 7168maxItems : 200 7169older : 7170anyOf : 7171- $ref : '#/components/schemas/PageToken' 7172- type : 'null' 7173newer : 7174anyOf : 7175- $ref : '#/components/schemas/PageToken' 7176- type : 'null' 7177high_water : 7178$ref : '#/components/schemas/Counter' 7179required : [ items , older , newer , high_water ] 7180additionalProperties : false 7181HistoryRead : 7182anyOf : 7183- $ref : '#/components/schemas/HistoryPage' 7184- $ref : '#/components/schemas/CheckpointPage' 7185description : The requested view determines the item type. Empty pages are valid for either view. 7186ContentPart : 7187type : object 7188properties : 7189field : 7190type : string 7191maxLength : 256 7192offset_bytes : 7193$ref : '#/components/schemas/Counter' 7194encoding : 7195type : string 7196enum : [ utf8 ] 7197text : 7198type : string 7199maxLength : 1048576 7200complete : 7201type : boolean 7202description : Offsets count exact stored UTF-8 bytes. 7203required : [ field , offset_bytes , encoding , text , complete ] 7204additionalProperties : false 7205EntryContentPage : 7206type : object 7207properties : 7208entry_id : 7209$ref : '#/components/schemas/ID' 7210parts : 7211type : array 7212items : 7213$ref : '#/components/schemas/ContentPart' 7214maxItems : 200 7215next : 7216anyOf : 7217- $ref : '#/components/schemas/PageToken' 7218- type : 'null' 7219x-max-decoded-content-bytes : 262144 7220required : [ entry_id , parts , next ] 7221additionalProperties : false 7222ContextSection : 7223type : object 7224properties : 7225id : 7226$ref : '#/components/schemas/ID' 7227label : 7228type : string 7229maxLength : 256 7230kind : 7231type : string 7232enum : [ instructions , extension_context , history , tools , other ] 7233source : 7234anyOf : 7235- type : string 7236maxLength : 4096 7237- type : 'null' 7238item_count : 7239$ref : '#/components/schemas/Counter' 7240utf8_bytes : 7241$ref : '#/components/schemas/Counter' 7242page_count : 7243$ref : '#/components/schemas/Counter' 7244preview : 7245$ref : '#/components/schemas/Preview' 7246required : [ id , label , kind , source , item_count , utf8_bytes , page_count , preview ] 7247additionalProperties : false 7248ContextSummary : 7249type : object 7250properties : 7251state : 7252type : string 7253enum : [ pending , ready ] 7254snapshot_id : 7255anyOf : 7256- $ref : '#/components/schemas/ID' 7257- type : 'null' 7258captured_at : 7259anyOf : 7260- $ref : '#/components/schemas/Timestamp' 7261- type : 'null' 7262provider : 7263anyOf : 7264- $ref : '#/components/schemas/ID' 7265- type : 'null' 7266model : 7267anyOf : 7268- $ref : '#/components/schemas/ID' 7269- type : 'null' 7270protocol : 7271anyOf : 7272- type : string 7273enum : [ responses , chat_completions ] 7274- type : 'null' 7275context_window_tokens : 7276anyOf : 7277- $ref : '#/components/schemas/Counter' 7278- type : 'null' 7279compaction : 7280$ref : '#/components/schemas/ContextCompaction' 7281sections : 7282type : array 7283items : 7284$ref : '#/components/schemas/ContextSection' 7285maxItems : 1000 7286reason : 7287anyOf : 7288- $ref : '#/components/schemas/SafeReason' 7289- type : 'null' 7290required : [ state , snapshot_id , captured_at , provider , model , protocol , context_window_tokens , compaction , 7291sections , reason ] 7292additionalProperties : false 7293allOf : 7294- if : 7295properties : 7296state : 7297const : ready 7298then : 7299properties : 7300snapshot_id : 7301$ref : '#/components/schemas/ID' 7302captured_at : 7303$ref : '#/components/schemas/Timestamp' 7304reason : 7305type : 'null' 7306else : 7307properties : 7308snapshot_id : 7309type : 'null' 7310reason : 7311$ref : '#/components/schemas/SafeReason' 7312ContextSectionPage : 7313type : object 7314properties : 7315snapshot_id : 7316$ref : '#/components/schemas/ID' 7317section_id : 7318$ref : '#/components/schemas/ID' 7319text : 7320type : string 7321x-max-utf8-bytes : 32768 7322maxLength : 32768 7323omitted : 7324anyOf : 7325- type : string 7326maxLength : 4096 7327- type : 'null' 7328page : 7329$ref : '#/components/schemas/Counter' 7330page_count : 7331$ref : '#/components/schemas/Counter' 7332required : [ snapshot_id , section_id , text , omitted , page , page_count ] 7333additionalProperties : false 7334TokenObservation : 7335type : object 7336properties : 7337estimated : 7338anyOf : 7339- $ref : '#/components/schemas/Counter' 7340- type : 'null' 7341observed : 7342anyOf : 7343- $ref : '#/components/schemas/Counter' 7344- type : 'null' 7345source : 7346anyOf : 7347- type : string 7348maxLength : 100 7349- type : 'null' 7350required : [ estimated , observed , source ] 7351additionalProperties : false 7352ProviderRequestRecord : 7353type : object 7354properties : 7355sequence : 7356$ref : '#/components/schemas/Counter' 7357provider : 7358$ref : '#/components/schemas/ID' 7359model : 7360$ref : '#/components/schemas/ID' 7361run_id : 7362anyOf : 7363- $ref : '#/components/schemas/ID' 7364- type : 'null' 7365started_at : 7366$ref : '#/components/schemas/Timestamp' 7367ended_at : 7368anyOf : 7369- $ref : '#/components/schemas/Timestamp' 7370- type : 'null' 7371prompt_tokens : 7372$ref : '#/components/schemas/TokenObservation' 7373completion_tokens : 7374$ref : '#/components/schemas/TokenObservation' 7375cached_tokens : 7376$ref : '#/components/schemas/TokenObservation' 7377failure : 7378anyOf : 7379- $ref : '#/components/schemas/SafeReason' 7380- type : 'null' 7381kind : 7382type : string 7383enum : [ turn , summarizer , background ] 7384provider_profile : 7385$ref : '#/components/schemas/ID' 7386account_id : 7387anyOf : 7388- $ref : '#/components/schemas/ID' 7389- type : 'null' 7390outcome : 7391type : string 7392enum : [ completed , failed ] 7393http_status : 7394anyOf : 7395- type : integer 7396minimum : 100 7397maximum : 599 7398- type : 'null' 7399cache_creation_tokens : 7400$ref : '#/components/schemas/TokenObservation' 7401cache_write_5m_tokens : 7402$ref : '#/components/schemas/TokenObservation' 7403cache_write_1h_tokens : 7404$ref : '#/components/schemas/TokenObservation' 7405reasoning_tokens : 7406$ref : '#/components/schemas/TokenObservation' 7407head_hash : 7408type : string 7409maxLength : 128 7410input_count : 7411$ref : '#/components/schemas/Counter' 7412replaced_input_count : 7413anyOf : 7414- $ref : '#/components/schemas/Counter' 7415- type : 'null' 7416projection_hash : 7417anyOf : 7418- type : string 7419maxLength : 128 7420- type : 'null' 7421strategy : 7422anyOf : 7423- type : string 7424maxLength : 256 7425- type : 'null' 7426cache_marks : 7427type : array 7428maxItems : 200 7429items : 7430type : object 7431properties : 7432through : 7433type : string 7434enum : [ tools , system , input ] 7435index : 7436anyOf : 7437- $ref : '#/components/schemas/Counter' 7438- type : 'null' 7439ttl_seconds : 7440$ref : '#/components/schemas/Counter' 7441required : [ through , index , ttl_seconds ] 7442additionalProperties : false 7443transcript_positions : 7444type : array 7445items : 7446$ref : '#/components/schemas/Counter' 7447maxItems : 200 7448required : [ sequence , provider , model , run_id , started_at , ended_at , prompt_tokens , completion_tokens , 7449cached_tokens , failure , transcript_positions , kind , provider_profile , account_id , outcome , 7450http_status , cache_creation_tokens , cache_write_5m_tokens , cache_write_1h_tokens , reasoning_tokens , 7451head_hash , input_count , replaced_input_count , projection_hash , strategy , cache_marks ] 7452additionalProperties : false 7453RequestRecordPage : 7454type : object 7455properties : 7456items : 7457type : array 7458items : 7459$ref : '#/components/schemas/ProviderRequestRecord' 7460maxItems : 200 7461next : 7462anyOf : 7463- $ref : '#/components/schemas/PageToken' 7464- type : 'null' 7465required : [ items , next ] 7466additionalProperties : false 7467ContextRead : 7468oneOf : 7469- $ref : '#/components/schemas/ContextSummary' 7470- $ref : '#/components/schemas/ContextSectionPage' 7471- $ref : '#/components/schemas/RequestRecordPage' 7472FormField : 7473type : object 7474properties : 7475name : 7476type : string 7477minLength : 1 7478maxLength : 256 7479label : 7480type : string 7481maxLength : 256 7482type : 7483type : string 7484enum : [ text , secret , boolean , choice , integer , hidden ] 7485required : 7486type : boolean 7487default : 7488$ref : '#/components/schemas/DynamicJSON' 7489default_binding : 7490description : Prefill from the selected row or installed session, before showing the form. 7491type : object 7492properties : 7493source : 7494type : string 7495enum : [ row , session ] 7496pointer : 7497type : string 7498pattern : ^(|/.*)$ 7499maxLength : 4096 7500required : [ source , pointer ] 7501additionalProperties : false 7502choices : 7503type : array 7504items : 7505type : object 7506properties : 7507value : 7508$ref : '#/components/schemas/DynamicJSON' 7509label : 7510type : string 7511maxLength : 256 7512required : [ value , label ] 7513additionalProperties : false 7514maxItems : 200 7515minimum : 7516anyOf : 7517- type : number 7518- type : 'null' 7519maximum : 7520anyOf : 7521- type : number 7522- type : 'null' 7523description : 7524type : string 7525maxLength : 4096 7526required : [ name , label , type , required , default , choices , minimum , maximum , description ] 7527additionalProperties : false 7528Binding : 7529oneOf : 7530- type : object 7531properties : 7532source : 7533const : literal 7534value : 7535$ref : '#/components/schemas/DynamicJSON' 7536required : [ source , value ] 7537additionalProperties : false 7538- type : object 7539properties : 7540source : 7541type : string 7542enum : [ row , form , session ] 7543pointer : 7544type : string 7545pattern : ^(|/.*)$ 7546maxLength : 4096 7547required : [ source , pointer ] 7548additionalProperties : false 7549description : JSON pointer resolves against the selected row, submitted form, or installed session 7550snapshot. No expression language. 7551ActionOperation : 7552type : object 7553properties : 7554operation_id : 7555type : string 7556minLength : 1 7557maxLength : 256 7558method : 7559type : string 7560enum : [ GET , PUT , POST , PATCH , DELETE ] 7561path_template : 7562$ref : '#/components/schemas/ResourceURL' 7563path : 7564type : object 7565additionalProperties : 7566$ref : '#/components/schemas/Binding' 7567query : 7568type : object 7569additionalProperties : 7570$ref : '#/components/schemas/Binding' 7571headers : 7572type : object 7573additionalProperties : 7574$ref : '#/components/schemas/Binding' 7575body : 7576type : object 7577additionalProperties : 7578$ref : '#/components/schemas/Binding' 7579propertyNames : 7580type : string 7581format : json-pointer 7582pattern : ^/ 7583success_status : 7584type : integer 7585enum : [ 200 , 201 ] 7586description : Expected synchronous JSON success status. Omitted operations accept 200 or 201 for mutations and 200 for reads. 7587result_schema : 7588$ref : '#/components/schemas/DynamicJSON' 7589description : Operation must be declared in this contract, or the installed extension contract version. 7590Bind If-Match from the displayed resource, never from a fresh read. Path, query and header map 7591keys name declared parameters; body map keys are JSON pointers into the request object. Missing 7592optional form values omit their bindings. result_schema is a JSON Schema 2020-12 fragment, with 7593no remote schema retrieval. 7594required : [ operation_id , method , path_template , path , query , headers , body , result_schema ] 7595additionalProperties : false 7596PageAction : 7597type : object 7598properties : 7599id : 7600$ref : '#/components/schemas/ID' 7601label : 7602type : string 7603maxLength : 256 7604keyboard_hint : 7605anyOf : 7606- type : string 7607maxLength : 100 7608- type : 'null' 7609confirmation : 7610anyOf : 7611- type : string 7612maxLength : 4096 7613- type : 'null' 7614fields : 7615type : array 7616items : 7617$ref : '#/components/schemas/FormField' 7618maxItems : 100 7619operation : 7620$ref : '#/components/schemas/ActionOperation' 7621required : [ id , label , keyboard_hint , confirmation , fields , operation ] 7622additionalProperties : false 7623PageRow : 7624type : object 7625properties : 7626id : 7627$ref : '#/components/schemas/ID' 7628text : 7629type : string 7630maxLength : 4096 7631badge : 7632anyOf : 7633- type : string 7634maxLength : 256 7635- type : 'null' 7636tone : 7637type : string 7638enum : [ plain , active , muted , success , warning , error ] 7639detail : 7640anyOf : 7641- type : string 7642maxLength : 16384 7643- type : 'null' 7644resource : 7645anyOf : 7646- type : object 7647properties : 7648url : 7649$ref : '#/components/schemas/ResourceURL' 7650etag : 7651$ref : '#/components/schemas/ETag' 7652value : 7653$ref : '#/components/schemas/DynamicJSON' 7654required : [ url , etag , value ] 7655additionalProperties : false 7656- type : 'null' 7657required : [ id , text , badge , tone , detail , resource ] 7658additionalProperties : false 7659PageDescriptor : 7660type : object 7661properties : 7662title : 7663type : string 7664maxLength : 256 7665empty_state : 7666type : string 7667maxLength : 4096 7668rows : 7669type : array 7670items : 7671$ref : '#/components/schemas/PageRow' 7672maxItems : 200 7673glance : 7674anyOf : 7675- $ref : '#/components/schemas/Glance' 7676- type : 'null' 7677actions : 7678type : array 7679items : 7680$ref : '#/components/schemas/PageAction' 7681maxItems : 100 7682summary : 7683type : string 7684maxLength : 4096 7685required : [ title , empty_state , rows , glance , actions , summary ] 7686additionalProperties : false 7687CatalogCandidate : 7688type : object 7689properties : 7690id : 7691$ref : '#/components/schemas/ID' 7692kind : 7693type : string 7694enum : [ extension , skill , instruction , mcp ] 7695title : 7696type : string 7697maxLength : 256 7698description : 7699type : string 7700maxLength : 4096 7701source : 7702type : string 7703maxLength : 4096 7704resolved_source : 7705anyOf : 7706- type : string 7707maxLength : 4096 7708- type : 'null' 7709preference_key : 7710anyOf : 7711- $ref : '#/components/schemas/ID' 7712- type : 'null' 7713valid : 7714type : boolean 7715eligible : 7716type : boolean 7717effective_enabled : 7718type : boolean 7719global_preference : 7720anyOf : 7721- type : boolean 7722- type : 'null' 7723session_override : 7724anyOf : 7725- type : boolean 7726- type : 'null' 7727shadowed_by : 7728anyOf : 7729- $ref : '#/components/schemas/ID' 7730- type : 'null' 7731dependencies : 7732type : array 7733items : 7734$ref : '#/components/schemas/ID' 7735maxItems : 200 7736quarantined : 7737type : boolean 7738diagnostic : 7739anyOf : 7740- $ref : '#/components/schemas/SafeReason' 7741- type : 'null' 7742extension : 7743description : Installed extension metadata for the inspector. Null for other candidate kinds. 7744anyOf : 7745- $ref : '#/components/schemas/ExtensionMetadata' 7746- type : 'null' 7747x-max-encoded-bytes : 65536 7748required : [ id , kind , title , description , source , resolved_source , preference_key , valid , eligible , 7749effective_enabled , global_preference , session_override , shadowed_by , dependencies , quarantined , 7750diagnostic , extension ] 7751additionalProperties : false 7752ExtensionMetadata : 7753type : object 7754properties : 7755context : 7756type : boolean 7757tools : 7758type : array 7759maxItems : 200 7760items : 7761$ref : '#/components/schemas/ID' 7762python_modules : 7763type : array 7764maxItems : 200 7765items : 7766$ref : '#/components/schemas/ID' 7767plugins : 7768type : array 7769maxItems : 200 7770items : 7771$ref : '#/components/schemas/ID' 7772required : [ context , tools , python_modules , plugins ] 7773additionalProperties : false 7774HTTPCommand : 7775type : object 7776properties : 7777id : 7778$ref : '#/components/schemas/ID' 7779slash_name : 7780type : string 7781maxLength : 256 7782description : 7783type : string 7784maxLength : 4096 7785arguments : 7786type : array 7787items : 7788$ref : '#/components/schemas/FormField' 7789maxItems : 100 7790caller_permissions : 7791type : array 7792items : 7793type : string 7794enum : [ human , model ] 7795maxItems : 2 7796delivery : 7797type : string 7798enum : [ read , mutation ] 7799operation : 7800$ref : '#/components/schemas/ActionOperation' 7801required : [ id , slash_name , description , arguments , caller_permissions , delivery , operation ] 7802additionalProperties : false 7803InputCommand : 7804type : object 7805properties : 7806id : 7807$ref : '#/components/schemas/ID' 7808slash_name : 7809type : string 7810maxLength : 256 7811description : 7812type : string 7813maxLength : 4096 7814arguments : 7815type : array 7816items : 7817$ref : '#/components/schemas/FormField' 7818maxItems : 100 7819caller_permissions : 7820type : array 7821items : 7822type : string 7823enum : [ human , model ] 7824maxItems : 2 7825delivery : 7826const : input 7827command_id : 7828$ref : '#/components/schemas/ID' 7829required : [ id , slash_name , description , arguments , caller_permissions , delivery , command_id ] 7830additionalProperties : false 7831Catalog : 7832type : object 7833properties : 7834native_commands : 7835type : array 7836items : 7837$ref : '#/components/schemas/HTTPCommand' 7838maxItems : 200 7839description : Static HTTP declarations for selected extensions when no composition has 7840been loaded. Reading these declarations does not prepare extensions or start a kernel. 7841discovery : 7842type : [ object , 'null' ] 7843properties : 7844revision : 7845$ref : '#/components/schemas/ID' 7846workspace : 7847$ref : '#/components/schemas/Workspace' 7848candidates : 7849type : array 7850items : 7851$ref : '#/components/schemas/CatalogCandidate' 7852maxItems : 200 7853diagnostics : 7854type : array 7855items : 7856$ref : '#/components/schemas/SafeReason' 7857maxItems : 200 7858next : 7859anyOf : 7860- $ref : '#/components/schemas/PageToken' 7861- type : 'null' 7862required : [ revision , workspace , candidates , diagnostics , next ] 7863additionalProperties : false 7864discovery_failure : 7865anyOf : 7866- $ref : '#/components/schemas/SafeReason' 7867- type : 'null' 7868loaded : 7869type : object 7870properties : 7871revision : 7872anyOf : 7873- $ref : '#/components/schemas/ID' 7874- type : 'null' 7875commands : 7876type : array 7877items : 7878oneOf : 7879- $ref : '#/components/schemas/HTTPCommand' 7880- $ref : '#/components/schemas/InputCommand' 7881maxItems : 200 7882next : 7883anyOf : 7884- $ref : '#/components/schemas/PageToken' 7885- type : 'null' 7886required : [ revision , commands , next ] 7887additionalProperties : false 7888pages : 7889type : array 7890items : 7891$ref : '#/components/schemas/PageDescriptor' 7892maxItems : 16 7893description : Pagination is independent for discovered candidates and loaded commands; next tokens 7894identify their section. 7895required : [ discovery , discovery_failure , loaded ] 7896additionalProperties : false 7897SessionReloadOutcome : 7898type : object 7899properties : 7900state : 7901type : string 7902enum : [ applied , failed , skipped ] 7903loaded_revision : 7904anyOf : 7905- $ref : '#/components/schemas/ID' 7906- type : 'null' 7907restart_required : 7908type : boolean 7909warnings : 7910$ref : '#/components/schemas/Warnings' 7911failure : 7912anyOf : 7913- $ref : '#/components/schemas/SafeReason' 7914- type : 'null' 7915required : [ state , loaded_revision , restart_required , warnings , failure ] 7916additionalProperties : false 7917ModelReloadOutcome : 7918type : object 7919properties : 7920provider : 7921$ref : '#/components/schemas/ID' 7922state : 7923type : string 7924enum : [ refreshed , failed , skipped ] 7925observed_at : 7926anyOf : 7927- $ref : '#/components/schemas/Timestamp' 7928- type : 'null' 7929failure : 7930anyOf : 7931- $ref : '#/components/schemas/SafeReason' 7932- type : 'null' 7933required : [ provider , state , observed_at , failure ] 7934additionalProperties : false 7935CachePolicyReloadOutcome : 7936type : object 7937properties : 7938state : 7939type : string 7940enum : [ refreshed , failed ] 7941failure : 7942anyOf : 7943- $ref : '#/components/schemas/SafeReason' 7944- type : 'null' 7945required : [ state , failure ] 7946additionalProperties : false 7947ReloadRequest : 7948type : object 7949properties : 7950target : 7951type : string 7952enum : [ session , models , both ] 7953default : both 7954additionalProperties : false 7955ReloadResult : 7956type : object 7957properties : 7958cache_policy : 7959anyOf : 7960- $ref : '#/components/schemas/CachePolicyReloadOutcome' 7961- type : 'null' 7962session : 7963anyOf : 7964- $ref : '#/components/schemas/SessionReloadOutcome' 7965- type : 'null' 7966models : 7967type : array 7968items : 7969$ref : '#/components/schemas/ModelReloadOutcome' 7970maxItems : 200 7971required : [ session , models , cache_policy ] 7972additionalProperties : false 7973KernelUpgradeResult : 7974type : object 7975properties : 7976old_build : 7977anyOf : 7978- type : string 7979maxLength : 512 7980- type : 'null' 7981new_build : 7982anyOf : 7983- type : string 7984maxLength : 512 7985- type : 'null' 7986state : 7987type : string 7988enum : [ upgraded , unchanged , failed ] 7989stopped_jobs : 7990type : array 7991items : 7992type : object 7993properties : 7994id : 7995$ref : '#/components/schemas/ID' 7996reason : 7997$ref : '#/components/schemas/SafeReason' 7998required : [ id , reason ] 7999additionalProperties : false 8000maxItems : 200 8001warnings : 8002$ref : '#/components/schemas/Warnings' 8003failure : 8004anyOf : 8005- $ref : '#/components/schemas/SafeReason' 8006- type : 'null' 8007old_kernel_id : 8008anyOf : 8009- $ref : '#/components/schemas/ID' 8010- type : 'null' 8011new_kernel_id : 8012anyOf : 8013- $ref : '#/components/schemas/ID' 8014- type : 'null' 8015required : [ old_build , new_build , state , stopped_jobs , warnings , failure , old_kernel_id , new_kernel_id ] 8016additionalProperties : false 8017CompactionRequest : 8018type : object 8019properties : 8020strategy : 8021$ref : '#/components/schemas/ID' 8022additionalProperties : false 8023CompactionObservation : 8024type : object 8025properties : 8026strategy : 8027anyOf : 8028- $ref : '#/components/schemas/ID' 8029- type : 'null' 8030before_tokens : 8031anyOf : 8032- $ref : '#/components/schemas/Counter' 8033- type : 'null' 8034after_tokens : 8035anyOf : 8036- $ref : '#/components/schemas/Counter' 8037- type : 'null' 8038evicted_entries : 8039$ref : '#/components/schemas/Counter' 8040summary : 8041type : string 8042maxLength : 32768 8043required : [ strategy , before_tokens , after_tokens , evicted_entries , summary ] 8044additionalProperties : false 8045CompactionResult : 8046type : object 8047properties : 8048selection_applied : 8049type : boolean 8050effective_strategy : 8051anyOf : 8052- $ref : '#/components/schemas/ID' 8053- type : 'null' 8054state : 8055type : string 8056enum : [ compacted , unchanged , failed ] 8057observation : 8058anyOf : 8059- $ref : '#/components/schemas/CompactionObservation' 8060- type : 'null' 8061failure : 8062anyOf : 8063- $ref : '#/components/schemas/SafeReason' 8064- type : 'null' 8065required : [ selection_applied , effective_strategy , state , observation , failure ] 8066additionalProperties : false 8067Model : 8068type : object 8069properties : 8070id : 8071$ref : '#/components/schemas/ID' 8072label : 8073type : string 8074maxLength : 256 8075efforts : 8076type : array 8077items : 8078type : object 8079properties : 8080id : 8081type : string 8082maxLength : 100 8083label : 8084type : string 8085maxLength : 256 8086required : [ id , label ] 8087additionalProperties : false 8088maxItems : 100 8089default_context_tokens : 8090anyOf : 8091- $ref : '#/components/schemas/Counter' 8092- type : 'null' 8093effective_context_tokens : 8094anyOf : 8095- $ref : '#/components/schemas/Counter' 8096- type : 'null' 8097max_context_tokens : 8098anyOf : 8099- $ref : '#/components/schemas/Counter' 8100- type : 'null' 8101max_output_tokens : 8102anyOf : 8103- $ref : '#/components/schemas/Counter' 8104- type : 'null' 8105input_modalities : 8106type : array 8107items : 8108type : string 8109minLength : 1 8110maxLength : 100 8111maxItems : 32 8112image_edge : 8113anyOf : 8114- type : integer 8115minimum : 1 8116maximum : 65536 8117- type : 'null' 8118raised : 8119type : boolean 8120cap_key : 8121$ref : '#/components/schemas/ID' 8122cache_policy : 8123type : object 8124properties : 8125ttl_seconds : 8126anyOf : 8127- $ref : '#/components/schemas/Counter' 8128- type : 'null' 8129source : 8130anyOf : 8131- type : string 8132maxLength : 256 8133- type : 'null' 8134required : [ ttl_seconds , source ] 8135additionalProperties : false 8136source : 8137type : string 8138maxLength : 256 8139observed_at : 8140anyOf : 8141- $ref : '#/components/schemas/Timestamp' 8142- type : 'null' 8143required : [ id , label , efforts , default_context_tokens , effective_context_tokens , max_context_tokens , 8144max_output_tokens , input_modalities , image_edge , raised , cap_key , cache_policy , source , observed_at ] 8145additionalProperties : false 8146CachePolicyEntry : 8147type : object 8148properties : 8149id : 8150$ref : '#/components/schemas/ID' 8151layer : 8152type : string 8153enum : 8154- default 8155- remote 8156- local 8157match : 8158type : object 8159properties : 8160extension : 8161anyOf : 8162- type : array 8163items : 8164type : string 8165maxLength : 4096 8166maxItems : 100 8167- type : 'null' 8168host : 8169anyOf : 8170- type : array 8171items : 8172type : string 8173maxLength : 4096 8174maxItems : 100 8175- type : 'null' 8176model : 8177anyOf : 8178- type : array 8179items : 8180type : string 8181maxLength : 4096 8182maxItems : 100 8183- type : 'null' 8184required : 8185- extension 8186- host 8187- model 8188additionalProperties : false 8189policy : 8190type : string 8191enum : 8192- refresh 8193- fixed 8194- evict 8195- unknown 8196clock : 8197type : string 8198enum : 8199- request 8200- response 8201tiers : 8202anyOf : 8203- type : array 8204maxItems : 32 8205items : 8206type : object 8207properties : 8208seconds : 8209$ref : '#/components/schemas/Counter' 8210write : 8211anyOf : 8212- type : number 8213minimum : 0 8214- type : 'null' 8215required : 8216- seconds 8217- write 8218additionalProperties : false 8219- type : 'null' 8220read : 8221anyOf : 8222- type : number 8223minimum : 0 8224- type : 'null' 8225survival : 8226anyOf : 8227- type : object 8228properties : 8229typical : 8230$ref : '#/components/schemas/Counter' 8231max : 8232anyOf : 8233- $ref : '#/components/schemas/Counter' 8234- type : 'null' 8235required : 8236- typical 8237- max 8238additionalProperties : false 8239- type : 'null' 8240evidence : 8241type : string 8242enum : 8243- documented 8244- measured 8245- implemented 8246- folklore 8247- unknown 8248source : 8249type : string 8250maxLength : 4096 8251checked : 8252type : string 8253maxLength : 100 8254note : 8255type : string 8256maxLength : 16384 8257required : 8258- id 8259- layer 8260- match 8261- policy 8262- clock 8263- tiers 8264- read 8265- survival 8266- evidence 8267- source 8268- checked 8269- note 8270additionalProperties : false 8271CachePolicyLayer : 8272type : object 8273properties : 8274name : 8275type : string 8276enum : 8277- default 8278- remote 8279- local 8280path : 8281type : string 8282maxLength : 16384 8283loaded : 8284type : boolean 8285error : 8286anyOf : 8287- $ref : '#/components/schemas/SafeReason' 8288- type : 'null' 8289required : 8290- name 8291- path 8292- loaded 8293- error 8294additionalProperties : false 8295CachePolicyPage : 8296type : object 8297properties : 8298entries : 8299type : array 8300items : 8301$ref : '#/components/schemas/CachePolicyEntry' 8302maxItems : 200 8303layers : 8304type : array 8305items : 8306$ref : '#/components/schemas/CachePolicyLayer' 8307maxItems : 3 8308matched : 8309anyOf : 8310- $ref : '#/components/schemas/CachePolicyEntry' 8311- type : 'null' 8312next : 8313anyOf : 8314- $ref : '#/components/schemas/PageToken' 8315- type : 'null' 8316required : 8317- entries 8318- layers 8319- matched 8320- next 8321additionalProperties : false 8322ModelRead : 8323oneOf : 8324- $ref : '#/components/schemas/ModelPage' 8325- $ref : '#/components/schemas/CachePolicyPage' 8326ModelPage : 8327type : object 8328properties : 8329items : 8330type : array 8331items : 8332$ref : '#/components/schemas/Model' 8333maxItems : 200 8334next : 8335anyOf : 8336- $ref : '#/components/schemas/PageToken' 8337- type : 'null' 8338required : [ items , next ] 8339additionalProperties : false 8340Host : 8341type : object 8342properties : 8343step : 8344description : Current probe progress. Null when connecting or when no probe is running. 8345anyOf : 8346- type : string 8347enum : [ staging ] 8348- type : 'null' 8349target : 8350$ref : '#/components/schemas/ID' 8351state : 8352type : string 8353enum : [ unknown , probing , ready , needs_auth , unreachable , unsupported ] 8354detail : 8355anyOf : 8356- $ref : '#/components/schemas/SafeReason' 8357- type : 'null' 8358observed_at : 8359anyOf : 8360- $ref : '#/components/schemas/Timestamp' 8361- type : 'null' 8362os : 8363anyOf : 8364- type : string 8365maxLength : 256 8366- type : 'null' 8367architecture : 8368anyOf : 8369- type : string 8370maxLength : 256 8371- type : 'null' 8372home : 8373anyOf : 8374- $ref : '#/components/schemas/Workspace' 8375- type : 'null' 8376authentication : 8377anyOf : 8378- type : object 8379properties : 8380instructions : 8381type : string 8382maxLength : 4096 8383ssh_target : 8384type : string 8385maxLength : 4096 8386control_path : 8387anyOf : 8388- type : string 8389maxLength : 4096 8390- type : 'null' 8391required : [ instructions , ssh_target , control_path ] 8392additionalProperties : false 8393- type : 'null' 8394required : [ target , state , detail , observed_at , os , architecture , home , authentication ] 8395additionalProperties : false 8396HostPage : 8397type : object 8398properties : 8399items : 8400type : array 8401items : 8402$ref : '#/components/schemas/Host' 8403maxItems : 200 8404next : 8405anyOf : 8406- $ref : '#/components/schemas/PageToken' 8407- type : 'null' 8408required : [ items , next ] 8409additionalProperties : false 8410RecentWorkspace : 8411type : object 8412properties : 8413location : 8414$ref : '#/components/schemas/Workspace' 8415use_count : 8416$ref : '#/components/schemas/Counter' 8417activity_at : 8418anyOf : 8419- $ref : '#/components/schemas/Timestamp' 8420- type : 'null' 8421required : [ location , use_count , activity_at ] 8422additionalProperties : false 8423RecentWorkspacePage : 8424type : object 8425properties : 8426items : 8427type : array 8428items : 8429$ref : '#/components/schemas/RecentWorkspace' 8430maxItems : 200 8431next : 8432anyOf : 8433- $ref : '#/components/schemas/PageToken' 8434- type : 'null' 8435required : [ items , next ] 8436additionalProperties : false 8437TreeChild : 8438type : object 8439properties : 8440name : 8441type : string 8442maxLength : 4096 8443kind : 8444type : string 8445enum : [ file , directory , symlink ] 8446location : 8447$ref : '#/components/schemas/Workspace' 8448language : 8449anyOf : 8450- type : string 8451maxLength : 256 8452- type : 'null' 8453changed : 8454$ref : '#/components/schemas/Counter' 8455required : [ name , kind , location , language , changed ] 8456additionalProperties : false 8457TreeEntry : 8458type : object 8459properties : 8460name : 8461type : string 8462maxLength : 4096 8463kind : 8464type : string 8465enum : [ file , directory , symlink ] 8466location : 8467$ref : '#/components/schemas/Workspace' 8468children : 8469type : array 8470items : 8471$ref : '#/components/schemas/TreeChild' 8472maxItems : 4 8473more : 8474$ref : '#/components/schemas/Counter' 8475language : 8476anyOf : 8477- type : string 8478maxLength : 256 8479- type : 'null' 8480changed : 8481$ref : '#/components/schemas/Counter' 8482required : [ name , kind , location , children , more , language , changed ] 8483additionalProperties : false 8484GitFacts : 8485type : object 8486properties : 8487kind : 8488const : git 8489branch : 8490anyOf : 8491- type : string 8492maxLength : 4096 8493- type : 'null' 8494revision : 8495anyOf : 8496- type : string 8497maxLength : 256 8498- type : 'null' 8499dirty : 8500anyOf : 8501- type : boolean 8502- type : 'null' 8503added : 8504anyOf : 8505- $ref : '#/components/schemas/Counter' 8506- type : 'null' 8507modified : 8508anyOf : 8509- $ref : '#/components/schemas/Counter' 8510- type : 'null' 8511removed : 8512anyOf : 8513- $ref : '#/components/schemas/Counter' 8514- type : 'null' 8515root : 8516$ref : '#/components/schemas/Workspace' 8517changed : 8518anyOf : 8519- $ref : '#/components/schemas/Counter' 8520- type : 'null' 8521touched_at : 8522anyOf : 8523- $ref : '#/components/schemas/Timestamp' 8524- type : 'null' 8525required : [ kind , branch , revision , dirty , added , modified , removed , root , changed , touched_at ] 8526additionalProperties : false 8527JJFacts : 8528type : object 8529properties : 8530kind : 8531const : jj 8532change_id : 8533anyOf : 8534- type : string 8535maxLength : 256 8536- type : 'null' 8537revision : 8538anyOf : 8539- type : string 8540maxLength : 256 8541- type : 'null' 8542description : 8543anyOf : 8544- type : string 8545maxLength : 4096 8546- type : 'null' 8547dirty : 8548anyOf : 8549- type : boolean 8550- type : 'null' 8551conflicts : 8552anyOf : 8553- type : boolean 8554- type : 'null' 8555root : 8556$ref : '#/components/schemas/Workspace' 8557changed : 8558anyOf : 8559- $ref : '#/components/schemas/Counter' 8560- type : 'null' 8561touched_at : 8562anyOf : 8563- $ref : '#/components/schemas/Timestamp' 8564- type : 'null' 8565bookmark : 8566anyOf : 8567- type : object 8568properties : 8569name : 8570type : string 8571maxLength : 4096 8572ahead : 8573$ref : '#/components/schemas/Counter' 8574required : [ name , ahead ] 8575additionalProperties : false 8576- type : 'null' 8577required : [ kind , change_id , revision , description , dirty , conflicts , root , changed , touched_at , 8578bookmark ] 8579additionalProperties : false 8580WorkspacePreview : 8581type : object 8582properties : 8583repository : 8584anyOf : 8585- oneOf : 8586- $ref : '#/components/schemas/GitFacts' 8587- $ref : '#/components/schemas/JJFacts' 8588- type : 'null' 8589repository_diagnostic : 8590anyOf : 8591- $ref : '#/components/schemas/SafeReason' 8592- type : 'null' 8593languages : 8594type : array 8595items : 8596type : object 8597properties : 8598name : 8599type : string 8600maxLength : 256 8601bytes : 8602$ref : '#/components/schemas/Counter' 8603share : 8604type : number 8605minimum : 0 8606maximum : 1 8607color : 8608anyOf : 8609- type : string 8610pattern : ^#[0-9a-fA-F]{6}$ 8611- type : 'null' 8612required : [ name , bytes , share , color ] 8613additionalProperties : false 8614maxItems : 100 8615tree : 8616type : array 8617items : 8618$ref : '#/components/schemas/TreeEntry' 8619maxItems : 12 8620more : 8621$ref : '#/components/schemas/Counter' 8622required : [ repository , repository_diagnostic , languages , tree , more ] 8623additionalProperties : false 8624WorkspaceDirectory : 8625type : object 8626properties : 8627directory : 8628$ref : '#/components/schemas/Workspace' 8629parent : 8630anyOf : 8631- $ref : '#/components/schemas/Workspace' 8632- type : 'null' 8633home : 8634anyOf : 8635- $ref : '#/components/schemas/Workspace' 8636- type : 'null' 8637host : 8638anyOf : 8639- $ref : '#/components/schemas/Host' 8640- type : 'null' 8641items : 8642type : array 8643items : 8644type : object 8645properties : 8646name : 8647type : string 8648maxLength : 4096 8649location : 8650$ref : '#/components/schemas/Workspace' 8651vcs : 8652anyOf : 8653- type : string 8654enum : [ git , jj ] 8655- type : 'null' 8656modified_at : 8657anyOf : 8658- $ref : '#/components/schemas/Timestamp' 8659- type : 'null' 8660hidden : 8661type : boolean 8662required : [ name , location , vcs , modified_at , hidden ] 8663additionalProperties : false 8664maxItems : 200 8665next : 8666anyOf : 8667- $ref : '#/components/schemas/PageToken' 8668- type : 'null' 8669preview : 8670$ref : '#/components/schemas/WorkspacePreview' 8671required : [ directory , parent , home , host , items , next ] 8672additionalProperties : false 8673WorkspaceRead : 8674oneOf : 8675- $ref : '#/components/schemas/RecentWorkspacePage' 8676- $ref : '#/components/schemas/WorkspaceDirectory' 8677Account : 8678type : object 8679properties : 8680id : 8681$ref : '#/components/schemas/ID' 8682provider : 8683$ref : '#/components/schemas/ID' 8684label : 8685type : string 8686maxLength : 256 8687detail : 8688type : string 8689maxLength : 4096 8690kind : 8691type : string 8692enum : [ model , service ] 8693default : model 8694selected_by_profiles : 8695type : array 8696items : 8697$ref : '#/components/schemas/ID' 8698maxItems : 200 8699required : [ id , provider , label , detail , kind , selected_by_profiles ] 8700additionalProperties : false 8701LoginProvider : 8702type : object 8703properties : 8704id : 8705$ref : '#/components/schemas/ID' 8706label : 8707type : string 8708maxLength : 256 8709detail : 8710type : string 8711maxLength : 4096 8712kind : 8713type : string 8714enum : [ model , service ] 8715default : model 8716flows : 8717type : array 8718items : 8719type : string 8720enum : [ browser , manual , device , form ] 8721maxItems : 4 8722fields : 8723type : array 8724items : 8725$ref : '#/components/schemas/FormField' 8726maxItems : 100 8727required : [ id , label , detail , kind , flows , fields ] 8728additionalProperties : false 8729Auth : 8730type : object 8731properties : 8732providers : 8733type : array 8734items : 8735$ref : '#/components/schemas/LoginProvider' 8736maxItems : 200 8737accounts : 8738type : array 8739items : 8740$ref : '#/components/schemas/Account' 8741maxItems : 200 8742required : [ providers , accounts ] 8743additionalProperties : false 8744LoginRequest : 8745type : object 8746properties : 8747provider : 8748$ref : '#/components/schemas/ID' 8749flow : 8750type : string 8751enum : [ browser , manual , device , form ] 8752values : 8753type : object 8754additionalProperties : 8755type : [ string , boolean , integer ] 8756description : Flow defaults to the provider preferred flow. Form names, types and required values 8757are checked against that provider declaration. Values are write-only. 8758required : [ provider , values ] 8759additionalProperties : false 8760LoginPatch : 8761type : object 8762properties : 8763response : 8764type : string 8765minLength : 1 8766writeOnly : true 8767maxLength : 16384 8768required : [ response ] 8769additionalProperties : false 8770Login : 8771type : object 8772properties : 8773id : 8774$ref : '#/components/schemas/ID' 8775provider : 8776$ref : '#/components/schemas/ID' 8777url : 8778anyOf : 8779- type : string 8780format : uri 8781maxLength : 4096 8782- type : 'null' 8783expires_at : 8784$ref : '#/components/schemas/Timestamp' 8785state : 8786type : string 8787enum : [ waiting , exchanging , complete , failed , cancelled , expired ] 8788instructions : 8789anyOf : 8790- type : string 8791maxLength : 4096 8792- type : 'null' 8793progress : 8794type : string 8795maxLength : 4096 8796accounts : 8797type : array 8798items : 8799$ref : '#/components/schemas/Account' 8800maxItems : 200 8801failure : 8802anyOf : 8803- $ref : '#/components/schemas/SafeReason' 8804- type : 'null' 8805required : [ id , provider , url , expires_at , state , instructions , progress , accounts , failure ] 8806additionalProperties : false 8807examples : 8808- id : 01a0fcea-2b00-7000-8000-000000000003 8809provider : example-provider 8810url : https://provider.example/authorize?state=synthetic-state 8811expires_at : '2026-10-02T14:15:00Z' 8812state : waiting 8813instructions : Paste the callback URL if the browser cannot reach the daemon. 8814progress : Waiting for authorization. 8815accounts : [] 8816failure : null 8817MailMetadata : 8818type : object 8819properties : 8820mail_id : 8821$ref : '#/components/schemas/ID' 8822sender_session_id : 8823anyOf : 8824- $ref : '#/components/schemas/ID' 8825- type : 'null' 8826receiver_session_id : 8827$ref : '#/components/schemas/ID' 8828kind : 8829type : string 8830enum : [ task , message , result , unreviewed , webhook ] 8831bytes : 8832$ref : '#/components/schemas/Counter' 8833sender_label : 8834anyOf : 8835- type : string 8836x-max-utf8-bytes : 400 8837maxLength : 100 8838- type : 'null' 8839required : [ mail_id , sender_session_id , receiver_session_id , kind , bytes , sender_label ] 8840additionalProperties : false 8841SessionStatusEvent : 8842type : object 8843properties : 8844type : 8845const : status 8846sequence : 8847$ref : '#/components/schemas/Counter' 8848data : 8849$ref : '#/components/schemas/SessionStatus' 8850required : [ type , sequence , data ] 8851additionalProperties : false 8852SessionInputEvent : 8853type : object 8854properties : 8855type : 8856const : input 8857sequence : 8858$ref : '#/components/schemas/Counter' 8859data : 8860type : object 8861properties : 8862input : 8863$ref : '#/components/schemas/Input' 8864required : [ input ] 8865additionalProperties : false 8866required : [ type , sequence , data ] 8867additionalProperties : false 8868SessionTextEvent : 8869type : object 8870properties : 8871type : 8872const : text 8873sequence : 8874$ref : '#/components/schemas/Counter' 8875data : 8876type : object 8877properties : 8878run_id : 8879$ref : '#/components/schemas/ID' 8880message_id : 8881$ref : '#/components/schemas/ID' 8882text : 8883type : string 8884maxLength : 262144 8885required : [ run_id , message_id , text ] 8886additionalProperties : false 8887required : [ type , sequence , data ] 8888additionalProperties : false 8889SessionThinkingEvent : 8890type : object 8891properties : 8892type : 8893const : thinking 8894sequence : 8895$ref : '#/components/schemas/Counter' 8896data : 8897type : object 8898properties : 8899run_id : 8900$ref : '#/components/schemas/ID' 8901message_id : 8902$ref : '#/components/schemas/ID' 8903text : 8904type : string 8905maxLength : 262144 8906elapsed_ms : 8907description : Completed thinking duration, when observed. 8908$ref : '#/components/schemas/Counter' 8909required : [ run_id , message_id , text ] 8910additionalProperties : false 8911required : [ type , sequence , data ] 8912additionalProperties : false 8913SessionMessageEvent : 8914type : object 8915properties : 8916type : 8917const : message 8918sequence : 8919$ref : '#/components/schemas/Counter' 8920data : 8921type : object 8922properties : 8923entry : 8924$ref : '#/components/schemas/HistoryEntry' 8925required : [ entry ] 8926additionalProperties : false 8927required : [ type , sequence , data ] 8928additionalProperties : false 8929SessionToolProgressEvent : 8930type : object 8931properties : 8932type : 8933const : tool_progress 8934sequence : 8935$ref : '#/components/schemas/Counter' 8936data : 8937type : object 8938properties : 8939progress : 8940anyOf : 8941- $ref : '#/components/schemas/ToolProgress' 8942- type : 'null' 8943required : [ progress ] 8944additionalProperties : false 8945x-max-encoded-bytes : 8192 8946required : [ type , sequence , data ] 8947additionalProperties : false 8948SessionToolEvent : 8949type : object 8950properties : 8951type : 8952const : tool 8953sequence : 8954$ref : '#/components/schemas/Counter' 8955data : 8956type : object 8957properties : 8958tool_call_id : 8959$ref : '#/components/schemas/ID' 8960progress_call_id : 8961$ref : '#/components/schemas/ID' 8962name : 8963type : string 8964maxLength : 100 8965arguments : 8966$ref : '#/components/schemas/DynamicJSON' 8967result : 8968$ref : '#/components/schemas/DynamicJSON' 8969trace : 8970anyOf : 8971- $ref : '#/components/schemas/ToolTrace' 8972- type : 'null' 8973content_complete : 8974type : boolean 8975reference : 8976anyOf : 8977- $ref : '#/components/schemas/ContentReference' 8978- type : 'null' 8979required : [ tool_call_id , progress_call_id , name , arguments , result , trace , content_complete , 8980reference ] 8981additionalProperties : false 8982required : [ type , sequence , data ] 8983additionalProperties : false 8984SessionNoteEvent : 8985type : object 8986properties : 8987type : 8988const : note 8989sequence : 8990$ref : '#/components/schemas/Counter' 8991data : 8992type : object 8993properties : 8994entry_id : 8995$ref : '#/components/schemas/ID' 8996origin : 8997type : string 8998maxLength : 256 8999text : 9000type : string 9001maxLength : 262144 9002: 9003anyOf : 9004- $ref : '#/components/schemas/MailMetadata' 9005- type : 'null' 9006required : [ entry_id , origin , text , ] 9007additionalProperties : false 9008required : [ type , sequence , data ] 9009additionalProperties : false 9010SessionRetryEvent : 9011type : object 9012properties : 9013type : 9014const : retry 9015sequence : 9016$ref : '#/components/schemas/Counter' 9017data : 9018type : object 9019properties : 9020run_id : 9021$ref : '#/components/schemas/ID' 9022attempt : 9023type : integer 9024minimum : 1 9025maximum : 9007199254740991 9026reason : 9027$ref : '#/components/schemas/SafeReason' 9028delay_ms : 9029$ref : '#/components/schemas/Counter' 9030required : [ run_id , attempt , reason , delay_ms ] 9031additionalProperties : false 9032required : [ type , sequence , data ] 9033additionalProperties : false 9034SessionUsageEvent : 9035type : object 9036properties : 9037type : 9038const : usage 9039sequence : 9040$ref : '#/components/schemas/Counter' 9041data : 9042$ref : '#/components/schemas/Usage' 9043required : [ type , sequence , data ] 9044additionalProperties : false 9045SessionCommittedEvent : 9046type : object 9047properties : 9048type : 9049const : committed 9050sequence : 9051$ref : '#/components/schemas/Counter' 9052data : 9053type : object 9054properties : 9055high_water : 9056$ref : '#/components/schemas/Counter' 9057replaces_all_live : 9058type : boolean 9059description : Retire all provisional output for a model commit. 9060replaces_live_ids : 9061type : array 9062items : 9063$ref : '#/components/schemas/ID' 9064maxItems : 256 9065required : [ high_water , replaces_live_ids , replaces_all_live ] 9066additionalProperties : false 9067required : [ type , sequence , data ] 9068additionalProperties : false 9069SessionTurnCompletedEvent : 9070type : object 9071properties : 9072type : 9073const : turn_completed 9074sequence : 9075$ref : '#/components/schemas/Counter' 9076data : 9077type : object 9078properties : 9079run_id : 9080$ref : '#/components/schemas/ID' 9081state : 9082type : string 9083enum : [ completed , interrupted , failed , abandoned ] 9084input_ids : 9085type : array 9086items : 9087$ref : '#/components/schemas/ID' 9088maxItems : 200 9089input_count : 9090$ref : '#/components/schemas/Counter' 9091truncated : 9092type : boolean 9093required : [ run_id , state , input_ids , input_count , truncated ] 9094additionalProperties : false 9095required : [ type , sequence , data ] 9096additionalProperties : false 9097SessionCompactedEvent : 9098type : object 9099properties : 9100type : 9101const : compacted 9102sequence : 9103$ref : '#/components/schemas/Counter' 9104data : 9105$ref : '#/components/schemas/CompactionObservation' 9106required : [ type , sequence , data ] 9107additionalProperties : false 9108SessionErrorEvent : 9109type : object 9110properties : 9111type : 9112const : error 9113sequence : 9114$ref : '#/components/schemas/Counter' 9115data : 9116type : object 9117properties : 9118run_id : 9119anyOf : 9120- $ref : '#/components/schemas/ID' 9121- type : 'null' 9122code : 9123type : string 9124maxLength : 100 9125message : 9126type : string 9127maxLength : 4096 9128required : [ run_id , code , message ] 9129additionalProperties : false 9130required : [ type , sequence , data ] 9131additionalProperties : false 9132SessionInvalidateEvent : 9133type : object 9134properties : 9135type : 9136const : invalidate 9137sequence : 9138$ref : '#/components/schemas/Counter' 9139data : 9140type : object 9141properties : 9142kind : 9143type : string 9144enum : [ session , settings , catalog , context , extension ] 9145url : 9146$ref : '#/components/schemas/ResourceURL' 9147required : [ kind , url ] 9148additionalProperties : false 9149required : [ type , sequence , data ] 9150additionalProperties : false 9151SessionEvent : 9152oneOf : 9153- $ref : '#/components/schemas/SessionStatusEvent' 9154- $ref : '#/components/schemas/SessionInputEvent' 9155- $ref : '#/components/schemas/SessionTextEvent' 9156- $ref : '#/components/schemas/SessionThinkingEvent' 9157- $ref : '#/components/schemas/SessionMessageEvent' 9158- $ref : '#/components/schemas/SessionToolProgressEvent' 9159- $ref : '#/components/schemas/SessionToolEvent' 9160- $ref : '#/components/schemas/SessionNoteEvent' 9161- $ref : '#/components/schemas/SessionRetryEvent' 9162- $ref : '#/components/schemas/SessionUsageEvent' 9163- $ref : '#/components/schemas/SessionCommittedEvent' 9164- $ref : '#/components/schemas/SessionTurnCompletedEvent' 9165- $ref : '#/components/schemas/SessionCompactedEvent' 9166- $ref : '#/components/schemas/SessionErrorEvent' 9167- $ref : '#/components/schemas/SessionInvalidateEvent' 9168ResetEvent : 9169type : object 9170properties : 9171type : 9172const : reset 9173data : 9174type : object 9175properties : 9176reason : 9177type : string 9178enum : [ initial , generation_changed , replay_unavailable , recovery ] 9179required : [ reason ] 9180additionalProperties : false 9181required : [ type , data ] 9182additionalProperties : false 9183FailureEvent : 9184type : object 9185properties : 9186type : 9187const : failure 9188data : 9189$ref : '#/components/schemas/SafeReason' 9190required : [ type , data ] 9191additionalProperties : false 9192ReplayBatch : 9193type : object 9194properties : 9195generation : 9196$ref : '#/components/schemas/Generation' 9197cursor : 9198$ref : '#/components/schemas/Counter' 9199events : 9200type : array 9201items : 9202$ref : '#/components/schemas/SessionEvent' 9203maxItems : 256 9204description : Empty keepalive keeps the last sequence. Nonempty event sequences are contiguous from 9205the requested cursor. 9206required : [ generation , cursor , events ] 9207additionalProperties : false 9208examples : 9209- generation : J6kYj6IGcXyP3eMIp-WL3A 9210cursor : 1 9211events : 9212- type : input 9213sequence : 1 9214data : 9215input : 9216id : 01a0fcea-2b00-7000-8000-000000000002 9217session_id : 01a0fcea-2b00-7000-8000-000000000001 9218kind : message 9219admission : accepted 9220http_status : 202 9221problem : null 9222accepted_at : '2026-10-02T14:00:00Z' 9223acceptance_order : 1 9224delivery : pending 9225blocking_reason : null 9226transcript_position : null 9227turn : null 9228client_id : draft-1 9229ResetBatch : 9230type : object 9231properties : 9232generation : 9233$ref : '#/components/schemas/Generation' 9234cursor : 9235$ref : '#/components/schemas/Counter' 9236events : 9237type : array 9238prefixItems : 9239- $ref : '#/components/schemas/ResetEvent' 9240items : 9241$ref : '#/components/schemas/SessionEvent' 9242minItems : 1 9243maxItems : 256 9244snapshot : 9245$ref : '#/components/schemas/Session' 9246description : Leading reset and complete snapshot. Later events, if any, follow the snapshot cursor. 9247Envelope cursor advances through every delivered event. 9248required : [ generation , cursor , events , snapshot ] 9249additionalProperties : false 9250examples : 9251- generation : J6kYj6IGcXyP3eMIp-WL3A 9252cursor : 0 9253events : 9254- type : reset 9255data : 9256reason : initial 9257snapshot : 9258id : 01a0fcea-2b00-7000-8000-000000000001 9259name : New session 9260automatic_name : New session 9261workspace : /workspace/project 9262location : 9263host : null 9264user : null 9265path : /workspace/project 9266label : null 9267parent_id : null 9268root_id : 01a0fcea-2b00-7000-8000-000000000001 9269address : null 9270depth : 0 9271closed : false 9272created_at : '2026-10-02T14:00:00Z' 9273activity_at : '2026-10-02T14:00:00Z' 9274provider_profile : personal 9275model : example-model 9276effort : null 9277status : 9278phase : idle 9279run_id : null 9280interrupt_requested : false 9281blocking_reason : null 9282preview : 9283text : '' 9284transcript_count : 0 9285truncated : false 9286preferences : 9287pinned : false 9288pin_order : null 9289archived : false 9290opens : 0 9291current_progress : [] 9292active_output : [] 9293activity : 9294lines : [] 9295output_scalars : 0 9296output_utf8_bytes : 0 9297observed_at : '2026-10-02T14:00:00Z' 9298latest_input : null 9299latest_answer : null 9300cursor : 9301generation : J6kYj6IGcXyP3eMIp-WL3A 9302sequence : 0 9303creation : 9304submitted : 9305kind : new 9306workspace : /workspace/project 9307name : null 9308provider_profile : null 9309model : null 9310effort : null 9311resolved : 9312workspace : /workspace/project 9313provider_profile : personal 9314model : example-model 9315effort : null 9316revision : config-1 9317family_revision : family-1 9318configuration_resource : 9319url : /sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration 9320etag : '"session-config-1"' 9321value : 9322id : 01a0fcea-2b00-7000-8000-000000000001 9323name : New session 9324workspace : /workspace/project 9325provider_profile : personal 9326model : example-model 9327effort : null 9328preferences : 9329pinned : false 9330pin_order : null 9331archived : false 9332selection : 9333extensions : {} 9334skills : {} 9335instructions : {} 9336mcp : {} 9337revision : config-1 9338family_revision : family-1 9339workspace_change : null 9340selection : 9341overrides : 9342extensions : {} 9343skills : {} 9344instructions : {} 9345mcp : {} 9346effective : 9347extensions : {} 9348skills : {} 9349instructions : {} 9350mcp : {} 9351composition : 9352desired_revision : composition-1 9353loaded_revision : null 9354needs_reload : true 9355dependencies : {} 9356quarantine : [] 9357availability : {} 9358kernel : 9359instance_id : null 9360state : none 9361stage : null 9362build : null 9363stale : false 9364staleness_reasons : [] 9365live_job_count : 0 9366running_jobs : [] 9367pending_inputs : [] 9368input_order : 0 9369usage : 9370model : null 9371observed_at : null 9372prompt_tokens : null 9373cached_prompt_tokens : null 9374cache_write_tokens : null 9375completion_tokens : null 9376total_tokens : null 9377elapsed_ms : null 9378tokens_per_second : null 9379context_window_tokens : null 9380cache_ttl_seconds : null 9381cache_fade : [] 9382history : 9383items : [] 9384older : null 9385newer : null 9386high_water : 0 9387glances : [] 9388FailureBatch : 9389type : object 9390properties : 9391generation : 9392$ref : '#/components/schemas/Generation' 9393cursor : 9394$ref : '#/components/schemas/Counter' 9395events : 9396type : array 9397items : 9398$ref : '#/components/schemas/FailureEvent' 9399minItems : 1 9400maxItems : 1 9401description : Terminal failure, alone with no snapshot. It does not commit a replacement cursor. 9402required : [ generation , cursor , events ] 9403additionalProperties : false 9404examples : 9405- generation : J6kYj6IGcXyP3eMIp-WL3A 9406cursor : 0 9407events : 9408- type : failure 9409data : 9410code : history_unavailable 9411detail : Durable history could not be loaded. 9412SessionBatch : 9413oneOf : 9414- $ref : '#/components/schemas/ReplayBatch' 9415- $ref : '#/components/schemas/ResetBatch' 9416- $ref : '#/components/schemas/FailureBatch' 9417x-max-encoded-bytes : 1048576 9418ActivityEvent : 9419type : object 9420properties : 9421type : 9422const : activity 9423data : 9424type : object 9425properties : 9426session_id : 9427$ref : '#/components/schemas/ID' 9428cursor : 9429$ref : '#/components/schemas/Cursor' 9430status : 9431$ref : '#/components/schemas/SessionStatus' 9432current_progress : 9433type : array 9434items : 9435$ref : '#/components/schemas/ToolProgress' 9436maxItems : 32 9437activity : 9438$ref : '#/components/schemas/Activity' 9439required : [ session_id , cursor , status , current_progress , activity ] 9440additionalProperties : false 9441required : [ type , data ] 9442additionalProperties : false 9443CollectionInvalidateEvent : 9444type : object 9445properties : 9446type : 9447const : invalidate 9448data : 9449type : object 9450properties : 9451urls : 9452type : array 9453items : 9454$ref : '#/components/schemas/ResourceURL' 9455maxItems : 200 9456session_ids : 9457type : array 9458items : 9459$ref : '#/components/schemas/ID' 9460maxItems : 200 9461scope_dirty : 9462type : boolean 9463required : [ urls , session_ids , scope_dirty ] 9464additionalProperties : false 9465required : [ type , data ] 9466additionalProperties : false 9467CollectionMailEvent : 9468type : object 9469properties : 9470type : 9471const : data : 9473$ref : '#/components/schemas/MailMetadata' 9474required : [ type , data ] 9475additionalProperties : false 9476CollectionReadyEvent : 9477type : object 9478properties : 9479type : 9480const : ready 9481data : 9482$ref : '#/components/schemas/EmptyRequest' 9483required : [ type , data ] 9484additionalProperties : false 9485CollectionResetEvent : 9486type : object 9487properties : 9488type : 9489const : reset 9490data : 9491type : object 9492properties : 9493reason : 9494const : initial 9495required : [ reason ] 9496additionalProperties : false 9497required : [ type , data ] 9498additionalProperties : false 9499CollectionOverflowEvent : 9500type : object 9501properties : 9502type : 9503const : overflow 9504data : 9505$ref : '#/components/schemas/EmptyRequest' 9506required : [ type , data ] 9507additionalProperties : false 9508CollectionReadyBatch : 9509type : object 9510properties : 9511events : 9512type : array 9513prefixItems : 9514- $ref : '#/components/schemas/CollectionReadyEvent' 9515- $ref : '#/components/schemas/CollectionResetEvent' 9516items : false 9517minItems : 2 9518maxItems : 2 9519required : [ events ] 9520additionalProperties : false 9521examples : 9522- events : 9523- type : ready 9524data : {} 9525- type : reset 9526data : 9527reason : initial 9528CollectionBatch : 9529oneOf : 9530- $ref : '#/components/schemas/CollectionReadyBatch' 9531- type : object 9532properties : 9533events : 9534type : array 9535items : 9536oneOf : 9537- $ref : '#/components/schemas/ActivityEvent' 9538- $ref : '#/components/schemas/CollectionInvalidateEvent' 9539- $ref : '#/components/schemas/CollectionMailEvent' 9540maxItems : 256 9541required : [ events ] 9542additionalProperties : false 9543- type : object 9544properties : 9545events : 9546type : array 9547items : 9548$ref : '#/components/schemas/CollectionOverflowEvent' 9549minItems : 1 9550maxItems : 1 9551required : [ events ] 9552additionalProperties : false 9553x-max-encoded-bytes : 1048576 9554examples : 9555- events : 9556- type : activity 9557data : 9558session_id : 01a0fcea-2b00-7000-8000-000000000001 9559cursor : 9560generation : J6kYj6IGcXyP3eMIp-WL3A 9561sequence : 0 9562status : 9563phase : idle 9564run_id : null 9565interrupt_requested : false 9566blocking_reason : null 9567current_progress : [] 9568active_output : [] 9569activity : 9570lines : [] 9571output_scalars : 0 9572output_utf8_bytes : 0 9573observed_at : '2026-10-02T14:00:00Z' 9574latest_input : null 9575latest_answer : null 9576SessionSSE : 9577type : object 9578properties : 9579data : 9580type : string 9581contentMediaType : application/json 9582contentSchema : 9583$ref : '#/components/schemas/SessionBatch' 9584description : One parsed SSE event. Decode data as JSON and validate SessionBatch separately; contentSchema 9585is not asserted by ordinary JSON Schema validation. No event, id or retry fields are emitted. 9586required : [ data ] 9587additionalProperties : false 9588examples : 9589- data : '{"generation":"J6kYj6IGcXyP3eMIp-WL3A","cursor":0,"events":[{"type":"reset","data":{"reason":"initial"}}],"snapshot":{"id":"01a0fcea-2b00-7000-8000-000000000001","name":"New 9590session","automatic_name":"New session","workspace":"/workspace/project","location":{"host":null,"user":null,"path":"/workspace/project","label":null},"parent_id":null,"root_id":"01a0fcea-2b00-7000-8000-000000000001","address":null,"depth":0,"closed":false,"created_at":"2026-10-02T14:00:00Z","activity_at":"2026-10-02T14:00:00Z","provider_profile":"personal","model":"example-model","effort":null,"status":{"phase":"idle","run_id":null,"interrupt_requested":false,"blocking_reason":null},"preview":{"text":"","transcript_count":0,"truncated":false},"preferences":{"pinned":false,"pin_order":null,"archived":false,"opens":0},"current_progress":[],"activity":{"lines":[],"output_scalars":0,"output_utf8_bytes":0,"observed_at":"2026-10-02T14:00:00Z","latest_input":null,"latest_answer":null},"cursor":{"generation":"J6kYj6IGcXyP3eMIp-WL3A","sequence":0},"creation":{"submitted":{"kind":"new","workspace":"/workspace/project","name":null,"provider_profile":null,"model":null,"effort":null},"resolved":{"workspace":"/workspace/project","provider_profile":"personal","model":"example-model","effort":null}},"revision":"config-1","family_revision":"family-1","configuration_resource":{"url":"/sessions/01a0fcea-2b00-7000-8000-000000000001?view=configuration","etag":"\"session-config-1\"","value":{"id":"01a0fcea-2b00-7000-8000-000000000001","name":"New 9591session","workspace":"/workspace/project","provider_profile":"personal","model":"example-model","effort":null,"preferences":{"pinned":false,"pin_order":null,"archived":false},"selection":{"extensions":{},"skills":{},"instructions":{},"mcp":{}},"revision":"config-1","family_revision":"family-1"}},"workspace_change":null,"selection":{"overrides":{"extensions":{},"skills":{},"instructions":{},"mcp":{}},"effective":{"extensions":{},"skills":{},"instructions":{},"mcp":{}}},"composition":{"desired_revision":"composition-1","loaded_revision":null,"needs_reload":true,"dependencies":{},"quarantine":[],"availability":{}},"kernel":{"instance_id":null,"state":"none","stage":null,"build":null,"stale":false,"staleness_reasons":[],"live_job_count":0,"running_jobs":[]},"pending_inputs":[],"input_order":0,"usage":{"model":null,"observed_at":null,"prompt_tokens":null,"cached_prompt_tokens":null,"cache_write_tokens":null,"completion_tokens":null,"total_tokens":null,"elapsed_ms":null,"tokens_per_second":null,"context_window_tokens":null,"cache_ttl_seconds":null,"cache_fade":[]},"history":{"items":[],"older":null,"newer":null,"high_water":0},"glances":[]}}' 9592- data : '{"generation":"J6kYj6IGcXyP3eMIp-WL3A","cursor":1,"events":[{"type":"input","sequence":1,"data":{"input":{"id":"01a0fcea-2b00-7000-8000-000000000002","session_id":"01a0fcea-2b00-7000-8000-000000000001","kind":"message","admission":"accepted","http_status":202,"problem":null,"accepted_at":"2026-10-02T14:00:00Z","acceptance_order":1,"delivery":"pending","blocking_reason":null,"transcript_position":null,"turn":null,"client_id":"draft-1"}}}]}' 9593CollectionSSE : 9594type : object 9595properties : 9596data : 9597type : string 9598contentMediaType : application/json 9599contentSchema : 9600$ref : '#/components/schemas/CollectionBatch' 9601description : One parsed SSE event. Decode data as JSON and validate CollectionBatch separately; 9602contentSchema is not asserted by ordinary JSON Schema validation. No event, id or retry fields 9603are emitted. 9604required : [ data ] 9605additionalProperties : false 9606examples : 9607- data : '{"events":[{"type":"ready","data":{}},{"type":"reset","data":{"reason":"initial"}}]}' 9608- data : '{"events":[{"type":"activity","data":{"session_id":"01a0fcea-2b00-7000-8000-000000000001","cursor":{"generation":"J6kYj6IGcXyP3eMIp-WL3A","sequence":0},"status":{"phase":"idle","run_id":null,"interrupt_requested":false,"blocking_reason":null},"current_progress":[],"activity":{"lines":[],"output_scalars":0,"output_utf8_bytes":0,"observed_at":"2026-10-02T14:00:00Z","latest_input":null,"latest_answer":null}}}]}' 9609WorkItem : 9610type : object 9611properties : 9612id : 9613$ref : '#/components/schemas/ID' 9614workspace : 9615$ref : '#/components/schemas/Workspace' 9616title : 9617type : string 9618x-max-utf8-bytes : 4096 9619maxLength : 4096 9620notes : 9621type : string 9622x-max-utf8-bytes : 32768 9623maxLength : 32768 9624parent_id : 9625anyOf : 9626- $ref : '#/components/schemas/ID' 9627- type : 'null' 9628session_id : 9629anyOf : 9630- $ref : '#/components/schemas/ID' 9631- type : 'null' 9632run_id : 9633anyOf : 9634- $ref : '#/components/schemas/ID' 9635- type : 'null' 9636status : 9637type : string 9638enum : [ open , active , blocked , done , cancelled ] 9639revision : 9640$ref : '#/components/schemas/ID' 9641created_at : 9642$ref : '#/components/schemas/Timestamp' 9643updated_at : 9644$ref : '#/components/schemas/Timestamp' 9645required : [ id , workspace , title , notes , parent_id , session_id , run_id , status , revision , created_at , 9646updated_at ] 9647additionalProperties : false 9648WorkCreate : 9649type : object 9650properties : 9651title : 9652type : string 9653x-max-utf8-bytes : 4096 9654maxLength : 4096 9655notes : 9656type : string 9657x-max-utf8-bytes : 32768 9658maxLength : 32768 9659parent_id : 9660anyOf : 9661- $ref : '#/components/schemas/ID' 9662- type : 'null' 9663session_id : 9664anyOf : 9665- $ref : '#/components/schemas/ID' 9666- type : 'null' 9667run_id : 9668anyOf : 9669- $ref : '#/components/schemas/ID' 9670- type : 'null' 9671notify_session_id : 9672$ref : '#/components/schemas/ID' 9673required : [ title ] 9674additionalProperties : false 9675examples : 9676- title : Fix the parser 9677WorkPatch : 9678type : object 9679properties : 9680title : 9681type : string 9682x-max-utf8-bytes : 4096 9683maxLength : 4096 9684notes : 9685type : string 9686x-max-utf8-bytes : 32768 9687maxLength : 32768 9688session_id : 9689anyOf : 9690- $ref : '#/components/schemas/ID' 9691- type : 'null' 9692run_id : 9693anyOf : 9694- $ref : '#/components/schemas/ID' 9695- type : 'null' 9696status : 9697type : string 9698enum : [ open , active , blocked , done , cancelled ] 9699notify_session_id : 9700$ref : '#/components/schemas/ID' 9701additionalProperties : false 9702Paperclip : 9703type : object 9704properties : 9705id : 9706$ref : '#/components/schemas/ID' 9707topic : 9708type : string 9709enum : [ harness , workflow , bug , user , other ] 9710title : 9711type : string 9712x-max-utf8-bytes : 4096 9713maxLength : 4096 9714message : 9715type : string 9716minLength : 1 9717pattern : \S 9718x-max-utf8-bytes : 32768 9719maxLength : 32768 9720suggestion : 9721type : string 9722x-max-utf8-bytes : 16384 9723maxLength : 16384 9724reply : 9725type : string 9726x-max-utf8-bytes : 16384 9727maxLength : 16384 9728status : 9729type : string 9730enum : [ open , acknowledged , resolved , dismissed ] 9731session_id : 9732anyOf : 9733- $ref : '#/components/schemas/ID' 9734- type : 'null' 9735workspace : 9736anyOf : 9737- $ref : '#/components/schemas/Workspace' 9738- type : 'null' 9739created_at : 9740$ref : '#/components/schemas/Timestamp' 9741updated_at : 9742$ref : '#/components/schemas/Timestamp' 9743resolution : 9744type : string 9745x-max-utf8-bytes : 16384 9746maxLength : 16384 9747resolving_session_id : 9748anyOf : 9749- $ref : '#/components/schemas/ID' 9750- type : 'null' 9751revision : 9752$ref : '#/components/schemas/ID' 9753required : [ id , topic , title , message , suggestion , reply , status , session_id , workspace , created_at , 9754updated_at , resolution , resolving_session_id , revision ] 9755additionalProperties : false 9756PaperclipCreate : 9757type : object 9758properties : 9759topic : 9760type : string 9761enum : [ harness , workflow , bug , user , other ] 9762title : 9763type : string 9764x-max-utf8-bytes : 4096 9765maxLength : 4096 9766message : 9767type : string 9768minLength : 1 9769pattern : \S 9770x-max-utf8-bytes : 32768 9771maxLength : 32768 9772suggestion : 9773type : string 9774x-max-utf8-bytes : 16384 9775maxLength : 16384 9776session_id : 9777anyOf : 9778- $ref : '#/components/schemas/ID' 9779- type : 'null' 9780workspace : 9781anyOf : 9782- $ref : '#/components/schemas/Workspace' 9783- type : 'null' 9784required : [ message ] 9785additionalProperties : false 9786PaperclipPatch : 9787type : object 9788properties : 9789status : 9790type : string 9791enum : [ acknowledged , resolved , dismissed ] 9792reply : 9793type : string 9794x-max-utf8-bytes : 16384 9795maxLength : 16384 9796resolution : 9797type : string 9798x-max-utf8-bytes : 16384 9799maxLength : 16384 9800description : Reply cannot accompany resolved or dismissed status. It acknowledges the item. 9801additionalProperties : false 9802ScheduleJob : 9803type : object 9804properties : 9805id : 9806$ref : '#/components/schemas/ID' 9807session_id : 9808$ref : '#/components/schemas/ID' 9809kind : 9810type : string 9811enum : [ once , recurring , heartbeat ] 9812prompt : 9813type : string 9814minLength : 1 9815x-max-utf8-bytes : 4096 9816maxLength : 4096 9817next_at : 9818$ref : '#/components/schemas/Timestamp' 9819every_seconds : 9820anyOf : 9821- type : integer 9822minimum : 60 9823maximum : 31536000 9824- type : 'null' 9825revision : 9826$ref : '#/components/schemas/ID' 9827created_at : 9828description : Null for historical schedules that did not record creation time. 9829anyOf : 9830- $ref : '#/components/schemas/Timestamp' 9831- type : 'null' 9832updated_at : 9833description : Null until a historical schedule records a new update. 9834anyOf : 9835- $ref : '#/components/schemas/Timestamp' 9836- type : 'null' 9837required : [ id , session_id , kind , prompt , next_at , every_seconds , revision , created_at , updated_at ] 9838additionalProperties : false 9839ScheduleCreate : 9840type : object 9841properties : 9842session_id : 9843$ref : '#/components/schemas/ID' 9844kind : 9845type : string 9846enum : [ once , recurring , heartbeat ] 9847prompt : 9848type : string 9849minLength : 1 9850x-max-utf8-bytes : 4096 9851maxLength : 4096 9852delay_seconds : 9853type : integer 9854minimum : 0 9855maximum : 31536000 9856default : 0 9857every_seconds : 9858type : integer 9859minimum : 60 9860maximum : 31536000 9861required : [ session_id , kind , prompt ] 9862additionalProperties : false 9863allOf : 9864- if : 9865properties : 9866kind : 9867const : once 9868then : 9869not : 9870required : [ every_seconds ] 9871else : 9872required : [ every_seconds ] 9873SchedulePatch : 9874type : object 9875properties : 9876kind : 9877type : string 9878enum : [ once , recurring , heartbeat ] 9879prompt : 9880type : string 9881minLength : 1 9882x-max-utf8-bytes : 4096 9883maxLength : 4096 9884delay_seconds : 9885type : integer 9886minimum : 0 9887maximum : 31536000 9888every_seconds : 9889anyOf : 9890- type : integer 9891minimum : 60 9892maximum : 31536000 9893- type : 'null' 9894description : 'Validate complete candidate: once has null repetition; recurring and heartbeat require 9895every_seconds.' 9896additionalProperties : false 9897LinkConfiguration : 9898type : object 9899properties : 9900workspace : 9901$ref : '#/components/schemas/Workspace' 9902group_id : 9903$ref : '#/components/schemas/ID' 9904members : 9905type : array 9906items : 9907$ref : '#/components/schemas/Workspace' 9908maxItems : 200 9909revision : 9910$ref : '#/components/schemas/ID' 9911next : 9912anyOf : 9913- $ref : '#/components/schemas/PageToken' 9914- type : 'null' 9915required : [ workspace , group_id , members , revision , next ] 9916additionalProperties : false 9917LinkConfigurationResource : 9918type : object 9919properties : 9920url : 9921$ref : '#/components/schemas/ResourceURL' 9922etag : 9923$ref : '#/components/schemas/ETag' 9924value : 9925$ref : '#/components/schemas/LinkConfiguration' 9926required : [ url , etag , value ] 9927additionalProperties : false 9928LinkGroup : 9929type : object 9930properties : 9931page : 9932$ref : '#/components/schemas/PageDescriptor' 9933configuration_resource : 9934$ref : '#/components/schemas/LinkConfigurationResource' 9935presence : 9936type : array 9937items : 9938type : object 9939properties : 9940workspace : 9941$ref : '#/components/schemas/Workspace' 9942exists : 9943description : Observed directory presence. Null for an uninspected or unreachable location. 9944anyOf : 9945- type : boolean 9946- type : 'null' 9947session_count : 9948$ref : '#/components/schemas/Counter' 9949host : 9950anyOf : 9951- $ref : '#/components/schemas/Host' 9952- type : 'null' 9953required : [ workspace , session_count , host , exists ] 9954additionalProperties : false 9955maxItems : 200 9956next : 9957anyOf : 9958- $ref : '#/components/schemas/PageToken' 9959- type : 'null' 9960required : [ configuration_resource , presence , next ] 9961additionalProperties : false 9962LinkMerge : 9963type : object 9964properties : 9965other_workspace : 9966$ref : '#/components/schemas/Workspace' 9967other_etag : 9968$ref : '#/components/schemas/ETag' 9969required : [ other_workspace , other_etag ] 9970additionalProperties : false 9971LinkChange : 9972type : object 9973properties : 9974resource : 9975$ref : '#/components/schemas/LinkConfigurationResource' 9976notifications : 9977type : array 9978items : 9979$ref : '#/components/schemas/TargetNotification' 9980maxItems : 200 9981notification_count : 9982$ref : '#/components/schemas/Counter' 9983truncated : 9984type : boolean 9985required : [ resource , notifications , notification_count , truncated ] 9986additionalProperties : false 9987HookConfiguration : 9988type : object 9989properties : 9990id : 9991$ref : '#/components/schemas/ID' 9992name : 9993type : string 9994pattern : ^[A-Za-z0-9_-]{1,64}$ 9995maxLength : 64 9996session_id : 9997$ref : '#/components/schemas/ID' 9998enabled : 9999type : boolean 10000signature_header : 10001type : string 10002pattern : ^[A-Za-z0-9-]{1,64}$ 10003maxLength : 64 10004signature_prefix : 10005type : string 10006pattern : ^[^\r\n]*$ 10007x-max-utf8-bytes : 32 10008maxLength : 32 10009revision : 10010$ref : '#/components/schemas/ID' 10011required : [ id , name , session_id , enabled , signature_header , signature_prefix , revision ] 10012additionalProperties : false 10013HookConfigurationResource : 10014type : object 10015properties : 10016url : 10017$ref : '#/components/schemas/ResourceURL' 10018etag : 10019$ref : '#/components/schemas/ETag' 10020value : 10021$ref : '#/components/schemas/HookConfiguration' 10022required : [ url , etag , value ] 10023additionalProperties : false 10024Hook : 10025type : object 10026properties : 10027configuration_resource : 10028$ref : '#/components/schemas/HookConfigurationResource' 10029delivery_url : 10030type : string 10031format : uri 10032maxLength : 4096 10033pending_count : 10034$ref : '#/components/schemas/Counter' 10035deferral_reason : 10036anyOf : 10037- $ref : '#/components/schemas/SafeReason' 10038- type : 'null' 10039required : [ configuration_resource , delivery_url , pending_count , deferral_reason ] 10040additionalProperties : false 10041HookCreate : 10042type : object 10043properties : 10044name : 10045type : string 10046pattern : ^[A-Za-z0-9_-]{1,64}$ 10047maxLength : 64 10048session_id : 10049$ref : '#/components/schemas/ID' 10050enabled : 10051type : boolean 10052signature_header : 10053type : string 10054pattern : ^[A-Za-z0-9-]{1,64}$ 10055maxLength : 64 10056signature_prefix : 10057type : string 10058pattern : ^[^\r\n]*$ 10059x-max-utf8-bytes : 32 10060maxLength : 32 10061secret : 10062type : string 10063minLength : 1 10064writeOnly : true 10065x-min-utf8-bytes : 16 10066x-max-utf8-bytes : 4096 10067maxLength : 4096 10068required : [ name , session_id ] 10069additionalProperties : false 10070examples : 10071- session_id : 01a0fcea-2b00-7000-8000-000000000001 10072name : ci 10073HookPatch : 10074type : object 10075properties : 10076name : 10077type : string 10078pattern : ^[A-Za-z0-9_-]{1,64}$ 10079maxLength : 64 10080enabled : 10081type : boolean 10082signature_header : 10083type : string 10084pattern : ^[A-Za-z0-9-]{1,64}$ 10085maxLength : 64 10086signature_prefix : 10087type : string 10088pattern : ^[^\r\n]*$ 10089x-max-utf8-bytes : 32 10090maxLength : 32 10091additionalProperties : false 10092HookSecretRequest : 10093type : object 10094properties : 10095secret : 10096type : string 10097minLength : 1 10098writeOnly : true 10099x-min-utf8-bytes : 16 10100x-max-utf8-bytes : 4096 10101maxLength : 4096 10102additionalProperties : false 10103HookChange : 10104type : object 10105properties : 10106resource : 10107$ref : '#/components/schemas/HookConfigurationResource' 10108notification : 10109$ref : '#/components/schemas/Notification' 10110secret : 10111type : string 10112minLength : 1 10113x-min-utf8-bytes : 16 10114x-max-utf8-bytes : 4096 10115maxLength : 4096 10116description : Secret appears only on creation and explicit rotation, including a generated secret. 10117Never present on PATCH or reads. 10118required : [ resource , notification ] 10119additionalProperties : false 10120examples : 10121- resource : 10122url : /extensions/webhooks/hooks/hook-1?view=configuration 10123etag : '"hook-revision-1"' 10124value : 10125id : hook-1 10126name : ci 10127session_id : 01a0fcea-2b00-7000-8000-000000000001 10128enabled : true 10129signature_header : X-Albedo-Signature 10130signature_prefix : sha256= 10131revision : hook-revision-1 10132notification : 10133state : not_requested 10134code : null 10135detail : null 10136secret : synthetic-example-hook-secret 10137HookPermission : 10138type : object 10139properties : 10140session_id : 10141$ref : '#/components/schemas/ID' 10142agent_manage : 10143type : boolean 10144revision : 10145$ref : '#/components/schemas/ID' 10146required : [ session_id , agent_manage , revision ] 10147additionalProperties : false 10148HookPermissionPatch : 10149type : object 10150properties : 10151agent_manage : 10152type : boolean 10153additionalProperties : false 10154HookPermissionResource : 10155type : object 10156properties : 10157url : 10158$ref : '#/components/schemas/ResourceURL' 10159etag : 10160$ref : '#/components/schemas/ETag' 10161value : 10162$ref : '#/components/schemas/HookPermission' 10163required : [ url , etag , value ] 10164additionalProperties : false 10165HookPermissionChange : 10166type : object 10167properties : 10168resource : 10169$ref : '#/components/schemas/HookPermissionResource' 10170notification : 10171$ref : '#/components/schemas/Notification' 10172required : [ resource , notification ] 10173additionalProperties : false 10174Delivery : 10175type : object 10176properties : 10177id : 10178$ref : '#/components/schemas/ID' 10179hook_id : 10180$ref : '#/components/schemas/ID' 10181session_id : 10182$ref : '#/components/schemas/ID' 10183received_at : 10184$ref : '#/components/schemas/Timestamp' 10185delivered_at : 10186anyOf : 10187- $ref : '#/components/schemas/Timestamp' 10188- type : 'null' 10189attempts : 10190$ref : '#/components/schemas/Counter' 10191deferral_reason : 10192anyOf : 10193- $ref : '#/components/schemas/SafeReason' 10194- type : 'null' 10195required : [ id , hook_id , session_id , received_at , delivered_at , attempts , deferral_reason ] 10196DeliveryDetail : 10197allOf : 10198- $ref : '#/components/schemas/Delivery' 10199- type : object 10200properties : 10201payload : 10202type : object 10203properties : 10204encoding : 10205type : string 10206enum : [ utf8 , base64 ] 10207data : 10208type : string 10209maxLength : 90000 10210required : [ encoding , data ] 10211additionalProperties : false 10212required : [ payload ] 10213WorkResource : 10214type : object 10215properties : 10216url : 10217$ref : '#/components/schemas/ResourceURL' 10218etag : 10219$ref : '#/components/schemas/ETag' 10220value : 10221$ref : '#/components/schemas/WorkItem' 10222required : [ url , etag , value ] 10223additionalProperties : false 10224WorkChange : 10225type : object 10226properties : 10227resource : 10228$ref : '#/components/schemas/WorkResource' 10229notification : 10230$ref : '#/components/schemas/Notification' 10231required : [ resource , notification ] 10232additionalProperties : false 10233examples : 10234- resource : 10235url : /extensions/work/items/work-1?workspace=%2Fworkspace%2Fproject 10236etag : '"work-revision-1"' 10237value : 10238id : work-1 10239workspace : /workspace/project 10240title : Fix the parser 10241notes : '' 10242parent_id : null 10243session_id : null 10244run_id : null 10245status : open 10246revision : work-revision-1 10247created_at : '2026-10-02T14:00:00Z' 10248updated_at : '2026-10-02T14:00:00Z' 10249notification : 10250state : not_requested 10251code : null 10252detail : null 10253WorkPage : 10254type : object 10255properties : 10256items : 10257type : array 10258items : 10259$ref : '#/components/schemas/WorkResource' 10260maxItems : 200 10261next : 10262anyOf : 10263- $ref : '#/components/schemas/PageToken' 10264- type : 'null' 10265page : 10266$ref : '#/components/schemas/PageDescriptor' 10267glance : 10268$ref : '#/components/schemas/Glance' 10269required : [ items , next ] 10270additionalProperties : false 10271PaperclipResource : 10272type : object 10273properties : 10274url : 10275$ref : '#/components/schemas/ResourceURL' 10276etag : 10277$ref : '#/components/schemas/ETag' 10278value : 10279$ref : '#/components/schemas/Paperclip' 10280required : [ url , etag , value ] 10281additionalProperties : false 10282PaperclipChange : 10283type : object 10284properties : 10285resource : 10286$ref : '#/components/schemas/PaperclipResource' 10287notification : 10288$ref : '#/components/schemas/Notification' 10289required : [ resource , notification ] 10290additionalProperties : false 10291PaperclipPage : 10292type : object 10293properties : 10294items : 10295type : array 10296items : 10297$ref : '#/components/schemas/PaperclipResource' 10298maxItems : 200 10299next : 10300anyOf : 10301- $ref : '#/components/schemas/PageToken' 10302- type : 'null' 10303page : 10304$ref : '#/components/schemas/PageDescriptor' 10305glance : 10306$ref : '#/components/schemas/Glance' 10307required : [ items , next ] 10308additionalProperties : false 10309WebSearchProvider : 10310type : object 10311properties : 10312name : 10313$ref : '#/components/schemas/ID' 10314label : 10315type : string 10316maxLength : 256 10317position : 10318type : integer 10319minimum : 1 10320enabled : 10321type : boolean 10322required : [ name , label , position , enabled ] 10323additionalProperties : false 10324WebSearchProviderResource : 10325type : object 10326properties : 10327url : 10328$ref : '#/components/schemas/ResourceURL' 10329etag : 10330$ref : '#/components/schemas/ETag' 10331value : 10332$ref : '#/components/schemas/WebSearchProvider' 10333required : [ url , etag , value ] 10334additionalProperties : false 10335WebSearchProviderPage : 10336type : object 10337properties : 10338items : 10339type : array 10340items : 10341$ref : '#/components/schemas/WebSearchProviderResource' 10342maxItems : 200 10343next : 10344type : 'null' 10345page : 10346$ref : '#/components/schemas/PageDescriptor' 10347required : [ items , next , page ] 10348additionalProperties : false 10349WebSearchProviderChangeRequest : 10350type : object 10351properties : 10352change : 10353type : string 10354enum : [ up , down , toggle ] 10355required : [ change ] 10356additionalProperties : false 10357WebSearchProviderChange : 10358type : object 10359properties : 10360resource : 10361$ref : '#/components/schemas/WebSearchProviderResource' 10362required : [ resource ] 10363additionalProperties : false 10364ScheduleResource : 10365type : object 10366properties : 10367url : 10368$ref : '#/components/schemas/ResourceURL' 10369etag : 10370$ref : '#/components/schemas/ETag' 10371value : 10372$ref : '#/components/schemas/ScheduleJob' 10373required : [ url , etag , value ] 10374additionalProperties : false 10375ScheduleChange : 10376type : object 10377properties : 10378resource : 10379$ref : '#/components/schemas/ScheduleResource' 10380notification : 10381$ref : '#/components/schemas/Notification' 10382required : [ resource , notification ] 10383additionalProperties : false 10384SchedulePage : 10385type : object 10386properties : 10387items : 10388type : array 10389items : 10390$ref : '#/components/schemas/ScheduleResource' 10391maxItems : 200 10392next : 10393anyOf : 10394- $ref : '#/components/schemas/PageToken' 10395- type : 'null' 10396page : 10397$ref : '#/components/schemas/PageDescriptor' 10398glance : 10399$ref : '#/components/schemas/Glance' 10400required : [ items , next ] 10401additionalProperties : false 10402HookPage : 10403type : object 10404properties : 10405items : 10406type : array 10407items : 10408$ref : '#/components/schemas/Hook' 10409maxItems : 200 10410next : 10411anyOf : 10412- $ref : '#/components/schemas/PageToken' 10413- type : 'null' 10414required : [ items , next ] 10415additionalProperties : false 10416DeliveryPage : 10417type : object 10418properties : 10419items : 10420type : array 10421items : 10422$ref : '#/components/schemas/Delivery' 10423maxItems : 200 10424next : 10425anyOf : 10426- $ref : '#/components/schemas/PageToken' 10427- type : 'null' 10428required : [ items , next ] 10429additionalProperties : false 10430ExtensionDeletion : 10431type : object 10432properties : 10433id : 10434$ref : '#/components/schemas/ID' 10435notification : 10436$ref : '#/components/schemas/Notification' 10437required : [ id , notification ] 10438additionalProperties : false 10439ProxyTextPart : 10440type : object 10441properties : 10442type : 10443const : text 10444text : 10445type : string 10446required : [ type , text ] 10447additionalProperties : false 10448ProxyImagePart : 10449type : object 10450properties : 10451type : 10452const : image_url 10453image_url : 10454type : object 10455properties : 10456url : 10457type : string 10458pattern : ^data:image/(png|jpeg|gif|webp);base64, 10459detail : 10460type : string 10461enum : [ auto , low , high ] 10462required : [ url ] 10463additionalProperties : false 10464required : [ type , image_url ] 10465additionalProperties : false 10466ProxyToolCall : 10467type : object 10468properties : 10469id : 10470type : string 10471minLength : 1 10472maxLength : 270000 10473type : 10474const : function 10475function : 10476type : object 10477properties : 10478name : 10479type : string 10480minLength : 1 10481maxLength : 256 10482arguments : 10483type : string 10484required : [ name , arguments ] 10485additionalProperties : false 10486required : [ id , type , function ] 10487additionalProperties : false 10488ProxyMessage : 10489type : object 10490properties : 10491role : 10492type : string 10493enum : [ system , developer , user , assistant , tool ] 10494content : 10495anyOf : 10496- oneOf : 10497- type : string 10498- type : array 10499items : 10500oneOf : 10501- $ref : '#/components/schemas/ProxyTextPart' 10502- $ref : '#/components/schemas/ProxyImagePart' 10503- type : 'null' 10504name : 10505type : string 10506maxLength : 256 10507tool_call_id : 10508type : string 10509minLength : 1 10510maxLength : 270000 10511tool_calls : 10512type : array 10513items : 10514$ref : '#/components/schemas/ProxyToolCall' 10515maxItems : 200 10516reasoning_content : 10517anyOf : 10518- type : string 10519- type : 'null' 10520description : Tool messages require tool_call_id. Only assistant messages carry tool_calls. Images 10521are accepted only as user data URLs. 10522required : [ role ] 10523additionalProperties : false 10524ProxyToolDefinition : 10525type : object 10526properties : 10527type : 10528const : function 10529function : 10530type : object 10531properties : 10532name : 10533type : string 10534minLength : 1 10535maxLength : 256 10536description : 10537type : string 10538parameters : 10539$ref : '#/components/schemas/DynamicJSON' 10540strict : 10541type : boolean 10542required : [ name ] 10543additionalProperties : false 10544required : [ type , function ] 10545additionalProperties : false 10546ProxyCompletionRequest : 10547type : object 10548properties : 10549model : 10550type : string 10551minLength : 1 10552maxLength : 577 10553messages : 10554type : array 10555items : 10556$ref : '#/components/schemas/ProxyMessage' 10557tools : 10558type : array 10559items : 10560$ref : '#/components/schemas/ProxyToolDefinition' 10561maxItems : 200 10562max_tokens : 10563type : integer 10564minimum : 1 10565maximum : 9007199254740991 10566max_completion_tokens : 10567type : integer 10568minimum : 1 10569maximum : 9007199254740991 10570temperature : 10571type : number 10572minimum : 0 10573maximum : 2 10574top_p : 10575type : number 10576minimum : 0 10577maximum : 1 10578stop : 10579oneOf : 10580- type : string 10581- type : array 10582items : 10583type : string 10584maxItems : 4 10585tool_choice : 10586oneOf : 10587- type : string 10588enum : [ none , auto , required ] 10589- type : object 10590properties : 10591type : 10592const : function 10593function : 10594type : object 10595properties : 10596name : 10597type : string 10598minLength : 1 10599maxLength : 256 10600required : [ name ] 10601additionalProperties : false 10602required : [ type , function ] 10603additionalProperties : false 10604parallel_tool_calls : 10605type : boolean 10606reasoning_effort : 10607type : string 10608maxLength : 100 10609reasoning : 10610type : object 10611properties : 10612effort : 10613type : string 10614maxLength : 100 10615required : [ effort ] 10616additionalProperties : false 10617response_format : 10618oneOf : 10619- type : object 10620properties : 10621type : 10622const : json_object 10623required : [ type ] 10624additionalProperties : false 10625- type : object 10626properties : 10627type : 10628const : json_schema 10629json_schema : 10630type : object 10631properties : 10632name : 10633type : string 10634maxLength : 256 10635description : 10636type : string 10637schema : 10638$ref : '#/components/schemas/DynamicJSON' 10639strict : 10640type : boolean 10641required : [ name , schema ] 10642additionalProperties : false 10643required : [ type , json_schema ] 10644additionalProperties : false 10645stream : 10646type : boolean 10647default : false 10648stream_options : 10649type : object 10650properties : 10651include_usage : 10652type : boolean 10653additionalProperties : false 10654x-max-encoded-bytes : 32000000 10655required : [ model , messages ] 10656additionalProperties : false 10657examples : 10658- model : personal/example-model 10659messages : 10660- role : user 10661content : Hello 10662stream : true 10663ProxyUsage : 10664type : object 10665properties : 10666prompt_tokens_details : 10667type : object 10668properties : 10669cached_tokens : 10670$ref : '#/components/schemas/Counter' 10671required : [ cached_tokens ] 10672additionalProperties : false 10673completion_tokens_details : 10674type : object 10675properties : 10676reasoning_tokens : 10677$ref : '#/components/schemas/Counter' 10678required : [ reasoning_tokens ] 10679additionalProperties : false 10680prompt_tokens : 10681$ref : '#/components/schemas/Counter' 10682completion_tokens : 10683$ref : '#/components/schemas/Counter' 10684total_tokens : 10685$ref : '#/components/schemas/Counter' 10686required : [ prompt_tokens , completion_tokens , total_tokens ] 10687additionalProperties : false 10688ProxyError : 10689type : object 10690properties : 10691error : 10692type : object 10693properties : 10694message : 10695type : string 10696maxLength : 4096 10697type : 10698type : string 10699maxLength : 100 10700code : 10701anyOf : 10702- type : string 10703maxLength : 100 10704- type : 'null' 10705param : 10706anyOf : 10707- type : string 10708maxLength : 256 10709- type : 'null' 10710required : [ message , type , code , param ] 10711additionalProperties : false 10712required : [ error ] 10713additionalProperties : false 10714ProxyCompletion : 10715type : object 10716properties : 10717id : 10718$ref : '#/components/schemas/ID' 10719object : 10720const : chat.completion 10721created : 10722$ref : '#/components/schemas/Counter' 10723model : 10724type : string 10725maxLength : 577 10726choices : 10727type : array 10728items : 10729type : object 10730properties : 10731index : 10732$ref : '#/components/schemas/Counter' 10733message : 10734type : object 10735properties : 10736role : 10737const : assistant 10738content : 10739anyOf : 10740- type : string 10741- type : 'null' 10742reasoning_content : 10743anyOf : 10744- type : string 10745- type : 'null' 10746tool_calls : 10747type : array 10748items : 10749$ref : '#/components/schemas/ProxyToolCall' 10750maxItems : 200 10751required : [ role , content ] 10752additionalProperties : false 10753finish_reason : 10754type : string 10755enum : [ stop , length , tool_calls , content_filter ] 10756required : [ index , message , finish_reason ] 10757additionalProperties : false 10758minItems : 1 10759maxItems : 1 10760usage : 10761anyOf : 10762- $ref : '#/components/schemas/ProxyUsage' 10763- type : 'null' 10764required : [ id , object , created , model , choices , usage ] 10765additionalProperties : false 10766examples : 10767- id : completion-1 10768object : chat.completion 10769created : 1790949600 10770model : personal/example-model 10771choices : 10772- index : 0 10773message : 10774role : assistant 10775content : Hello 10776finish_reason : stop 10777usage : 10778prompt_tokens : 1 10779completion_tokens : 1 10780total_tokens : 2 10781ProxyToolDelta : 10782type : object 10783properties : 10784index : 10785$ref : '#/components/schemas/Counter' 10786id : 10787type : string 10788minLength : 1 10789maxLength : 270000 10790type : 10791const : function 10792function : 10793type : object 10794properties : 10795name : 10796type : string 10797maxLength : 256 10798arguments : 10799type : string 10800required : [ name , arguments ] 10801additionalProperties : false 10802required : [ index ] 10803additionalProperties : false 10804ProxyChunk : 10805type : object 10806properties : 10807id : 10808$ref : '#/components/schemas/ID' 10809object : 10810const : chat.completion.chunk 10811created : 10812$ref : '#/components/schemas/Counter' 10813model : 10814type : string 10815maxLength : 577 10816choices : 10817type : array 10818items : 10819type : object 10820properties : 10821index : 10822$ref : '#/components/schemas/Counter' 10823delta : 10824type : object 10825properties : 10826role : 10827const : assistant 10828content : 10829type : string 10830reasoning_content : 10831type : string 10832tool_calls : 10833type : array 10834items : 10835$ref : '#/components/schemas/ProxyToolDelta' 10836maxItems : 200 10837additionalProperties : false 10838finish_reason : 10839anyOf : 10840- type : string 10841enum : [ stop , length , tool_calls , content_filter ] 10842- type : 'null' 10843required : [ index , delta , finish_reason ] 10844additionalProperties : false 10845maxItems : 1 10846usage : 10847anyOf : 10848- $ref : '#/components/schemas/ProxyUsage' 10849- type : 'null' 10850required : [ id , object , created , model , choices ] 10851additionalProperties : false 10852ProxySSE : 10853type : object 10854properties : 10855data : 10856anyOf : 10857- const : '[DONE]' 10858- type : string 10859contentMediaType : application/json 10860contentSchema : 10861oneOf : 10862- $ref : '#/components/schemas/ProxyChunk' 10863- $ref : '#/components/schemas/ProxyError' 10864description : Data is a JSON chunk or error, followed by literal [DONE]. Validate decoded JSON explicitly. 10865required : [ data ] 10866additionalProperties : false 10867ProxyModels : 10868type : object 10869properties : 10870object : 10871const : list 10872data : 10873type : array 10874items : 10875type : object 10876properties : 10877id : 10878type : string 10879minLength : 1 10880maxLength : 577 10881object : 10882const : model 10883created : 10884$ref : '#/components/schemas/Counter' 10885owned_by : 10886type : string 10887maxLength : 256 10888required : [ id , object , created , owned_by ] 10889additionalProperties : false 10890errors : 10891type : array 10892items : 10893type : object 10894properties : 10895profile : 10896$ref : '#/components/schemas/ID' 10897message : 10898type : string 10899maxLength : 4096 10900required : [ profile , message ] 10901additionalProperties : false 10902maxItems : 200 10903required : [ object , data ] 10904additionalProperties : false 10905AdmissionProblem : 10906type : object 10907properties : 10908type : 10909const : about:blank 10910title : 10911type : string 10912maxLength : 256 10913status : 10914type : integer 10915minimum : 400 10916maximum : 599 10917detail : 10918type : string 10919maxLength : 4096 10920code : 10921type : string 10922minLength : 1 10923maxLength : 100 10924fields : 10925type : array 10926items : 10927type : object 10928properties : 10929pointer : 10930type : string 10931maxLength : 4096 10932detail : 10933type : string 10934maxLength : 4096 10935required : [ pointer , detail ] 10936additionalProperties : false 10937maxItems : 100 10938required : [ type , title , status , detail , code ] 10939additionalProperties : false 10940ContextCompaction : 10941type : object 10942properties : 10943status : 10944type : string 10945enum : [ not_configured , not_needed , compacted , unknown ] 10946strategy : 10947anyOf : 10948- $ref : '#/components/schemas/ID' 10949- type : 'null' 10950trigger_free_percent : 10951anyOf : 10952- type : number 10953minimum : 0 10954maximum : 100 10955- type : 'null' 10956input_limit_tokens : 10957anyOf : 10958- $ref : '#/components/schemas/Counter' 10959- type : 'null' 10960estimated_input_tokens : 10961anyOf : 10962- $ref : '#/components/schemas/Counter' 10963- type : 'null' 10964provider_input_tokens : 10965anyOf : 10966- $ref : '#/components/schemas/Counter' 10967- type : 'null' 10968provider_cached_input_tokens : 10969anyOf : 10970- $ref : '#/components/schemas/Counter' 10971- type : 'null' 10972before_items : 10973anyOf : 10974- $ref : '#/components/schemas/Counter' 10975- type : 'null' 10976after_items : 10977anyOf : 10978- $ref : '#/components/schemas/Counter' 10979- type : 'null' 10980source : 10981anyOf : 10982- type : string 10983maxLength : 512 10984- type : 'null' 10985estimate_method : 10986anyOf : 10987- type : string 10988maxLength : 512 10989- type : 'null' 10990required : [ status , strategy , trigger_free_percent , input_limit_tokens , estimated_input_tokens , provider_input_tokens , 10991provider_cached_input_tokens , before_items , after_items , source , estimate_method ] 10992additionalProperties : false