swagger.yaml

   1basePath: /v1
   2definitions:
   3  catwalk.Model:
   4    properties:
   5      can_reason:
   6        type: boolean
   7      context_window:
   8        type: integer
   9      cost_per_1m_in:
  10        type: number
  11      cost_per_1m_in_cached:
  12        type: number
  13      cost_per_1m_out:
  14        type: number
  15      cost_per_1m_out_cached:
  16        type: number
  17      default_max_tokens:
  18        type: integer
  19      default_reasoning_effort:
  20        type: string
  21      id:
  22        type: string
  23      name:
  24        type: string
  25      options:
  26        $ref: '#/definitions/catwalk.ModelOptions'
  27      reasoning_levels:
  28        items:
  29          type: string
  30        type: array
  31      supports_attachments:
  32        type: boolean
  33    type: object
  34  catwalk.ModelOptions:
  35    properties:
  36      frequency_penalty:
  37        type: number
  38      presence_penalty:
  39        type: number
  40      provider_options:
  41        additionalProperties: {}
  42        type: object
  43      temperature:
  44        type: number
  45      top_k:
  46        type: integer
  47      top_p:
  48        type: number
  49    type: object
  50  config.Attribution:
  51    properties:
  52      co_authored_by:
  53        type: boolean
  54      generated_with:
  55        type: boolean
  56      trailer_style:
  57        $ref: '#/definitions/config.TrailerStyle'
  58    type: object
  59  config.Completions:
  60    properties:
  61      max_depth:
  62        type: integer
  63      max_items:
  64        type: integer
  65    type: object
  66  config.LSPConfig:
  67    properties:
  68      args:
  69        items:
  70          type: string
  71        type: array
  72      command:
  73        type: string
  74      disabled:
  75        type: boolean
  76      env:
  77        additionalProperties:
  78          type: string
  79        type: object
  80      filetypes:
  81        items:
  82          type: string
  83        type: array
  84      init_options:
  85        additionalProperties: {}
  86        type: object
  87      options:
  88        additionalProperties: {}
  89        type: object
  90      root_markers:
  91        items:
  92          type: string
  93        type: array
  94      timeout:
  95        type: integer
  96    type: object
  97  config.LSPs:
  98    additionalProperties:
  99      $ref: '#/definitions/config.LSPConfig'
 100    type: object
 101  config.MCPConfig:
 102    properties:
 103      args:
 104        items:
 105          type: string
 106        type: array
 107      command:
 108        type: string
 109      disabled:
 110        type: boolean
 111      disabled_tools:
 112        items:
 113          type: string
 114        type: array
 115      env:
 116        additionalProperties:
 117          type: string
 118        type: object
 119      headers:
 120        additionalProperties:
 121          type: string
 122        description: 'TODO: maybe make it possible to get the value from the env'
 123        type: object
 124      timeout:
 125        type: integer
 126      type:
 127        $ref: '#/definitions/config.MCPType'
 128      url:
 129        type: string
 130    type: object
 131  config.MCPType:
 132    enum:
 133    - stdio
 134    - sse
 135    - http
 136    type: string
 137    x-enum-varnames:
 138    - MCPStdio
 139    - MCPSSE
 140    - MCPHttp
 141  config.MCPs:
 142    additionalProperties:
 143      $ref: '#/definitions/config.MCPConfig'
 144    type: object
 145  config.Permissions:
 146    properties:
 147      allowed_tools:
 148        items:
 149          type: string
 150        type: array
 151    type: object
 152  config.Scope:
 153    enum:
 154    - 0
 155    - 1
 156    type: integer
 157    x-enum-varnames:
 158    - ScopeGlobal
 159    - ScopeWorkspace
 160  config.SelectedModel:
 161    properties:
 162      frequency_penalty:
 163        type: number
 164      max_tokens:
 165        description: Overrides the default model configuration.
 166        type: integer
 167      model:
 168        description: |-
 169          The model id as used by the provider API.
 170          Required.
 171        type: string
 172      presence_penalty:
 173        type: number
 174      provider:
 175        description: |-
 176          The model provider, same as the key/id used in the providers config.
 177          Required.
 178        type: string
 179      provider_options:
 180        additionalProperties: {}
 181        description: Override provider specific options.
 182        type: object
 183      reasoning_effort:
 184        description: Only used by models that use the openai provider and need this
 185          set.
 186        type: string
 187      temperature:
 188        type: number
 189      think:
 190        description: Used by anthropic models that can reason to indicate if the model
 191          should think.
 192        type: boolean
 193      top_k:
 194        type: integer
 195      top_p:
 196        type: number
 197    type: object
 198  config.SelectedModelType:
 199    enum:
 200    - large
 201    - small
 202    type: string
 203    x-enum-varnames:
 204    - SelectedModelTypeLarge
 205    - SelectedModelTypeSmall
 206  config.TUIOptions:
 207    properties:
 208      compact_mode:
 209        type: boolean
 210      completions:
 211        $ref: '#/definitions/config.Completions'
 212      diff_mode:
 213        type: string
 214      transparent:
 215        type: boolean
 216    type: object
 217  config.ToolGrep:
 218    properties:
 219      timeout:
 220        $ref: '#/definitions/time.Duration'
 221    type: object
 222  config.ToolLs:
 223    properties:
 224      max_depth:
 225        type: integer
 226      max_items:
 227        type: integer
 228    type: object
 229  config.Tools:
 230    properties:
 231      grep:
 232        $ref: '#/definitions/config.ToolGrep'
 233      ls:
 234        $ref: '#/definitions/config.ToolLs'
 235    type: object
 236  config.TrailerStyle:
 237    enum:
 238    - none
 239    - co-authored-by
 240    - assisted-by
 241    type: string
 242    x-enum-varnames:
 243    - TrailerStyleNone
 244    - TrailerStyleCoAuthoredBy
 245    - TrailerStyleAssistedBy
 246  csync.Map-string-config_ProviderConfig:
 247    type: object
 248  github_com_charmbracelet_crush_internal_config.Config:
 249    properties:
 250      $schema:
 251        type: string
 252      lsp:
 253        $ref: '#/definitions/config.LSPs'
 254      mcp:
 255        $ref: '#/definitions/config.MCPs'
 256      models:
 257        additionalProperties:
 258          $ref: '#/definitions/config.SelectedModel'
 259        description: We currently only support large/small as values here.
 260        type: object
 261      options:
 262        $ref: '#/definitions/github_com_charmbracelet_crush_internal_config.Options'
 263      permissions:
 264        $ref: '#/definitions/config.Permissions'
 265      providers:
 266        allOf:
 267        - $ref: '#/definitions/csync.Map-string-config_ProviderConfig'
 268        description: The providers that are configured
 269      recent_models:
 270        additionalProperties:
 271          items:
 272            $ref: '#/definitions/config.SelectedModel'
 273          type: array
 274        description: Recently used models stored in the data directory config.
 275        type: object
 276      tools:
 277        $ref: '#/definitions/config.Tools'
 278    type: object
 279  github_com_charmbracelet_crush_internal_config.Options:
 280    properties:
 281      attribution:
 282        $ref: '#/definitions/config.Attribution'
 283      auto_lsp:
 284        type: boolean
 285      context_paths:
 286        items:
 287          type: string
 288        type: array
 289      data_directory:
 290        description: Relative to the cwd
 291        type: string
 292      debug:
 293        type: boolean
 294      debug_lsp:
 295        type: boolean
 296      disable_auto_summarize:
 297        type: boolean
 298      disable_default_providers:
 299        type: boolean
 300      disable_metrics:
 301        type: boolean
 302      disable_notifications:
 303        type: boolean
 304      disable_provider_auto_update:
 305        type: boolean
 306      disabled_tools:
 307        items:
 308          type: string
 309        type: array
 310      initialize_as:
 311        type: string
 312      progress:
 313        type: boolean
 314      skills_paths:
 315        items:
 316          type: string
 317        type: array
 318      tui:
 319        $ref: '#/definitions/config.TUIOptions'
 320    type: object
 321  github_com_charmbracelet_crush_internal_proto.Message:
 322    properties:
 323      created_at:
 324        type: integer
 325      id:
 326        type: string
 327      model:
 328        type: string
 329      parts:
 330        items: {}
 331        type: array
 332      provider:
 333        type: string
 334      role:
 335        $ref: '#/definitions/proto.MessageRole'
 336      session_id:
 337        type: string
 338      updated_at:
 339        type: integer
 340    type: object
 341  lsp.ServerState:
 342    enum:
 343    - 0
 344    - 1
 345    - 2
 346    - 3
 347    - 4
 348    - 5
 349    type: integer
 350    x-enum-varnames:
 351    - StateUnstarted
 352    - StateStarting
 353    - StateReady
 354    - StateError
 355    - StateStopped
 356    - StateDisabled
 357  proto.AgentInfo:
 358    properties:
 359      is_busy:
 360        type: boolean
 361      is_ready:
 362        type: boolean
 363      model:
 364        $ref: '#/definitions/catwalk.Model'
 365      model_cfg:
 366        $ref: '#/definitions/config.SelectedModel'
 367    type: object
 368  proto.AgentMessage:
 369    properties:
 370      attachments:
 371        items:
 372          $ref: '#/definitions/proto.Attachment'
 373        type: array
 374      prompt:
 375        type: string
 376      session_id:
 377        type: string
 378    type: object
 379  proto.AgentSession:
 380    properties:
 381      completion_tokens:
 382        type: integer
 383      cost:
 384        type: number
 385      created_at:
 386        type: integer
 387      id:
 388        type: string
 389      is_busy:
 390        type: boolean
 391      message_count:
 392        type: integer
 393      parent_session_id:
 394        type: string
 395      prompt_tokens:
 396        type: integer
 397      summary_message_id:
 398        type: string
 399      title:
 400        type: string
 401      updated_at:
 402        type: integer
 403    type: object
 404  proto.Attachment:
 405    properties:
 406      content:
 407        items:
 408          type: integer
 409        type: array
 410      file_name:
 411        type: string
 412      file_path:
 413        type: string
 414      mime_type:
 415        type: string
 416    type: object
 417  proto.ConfigCompactRequest:
 418    properties:
 419      enabled:
 420        type: boolean
 421      scope:
 422        $ref: '#/definitions/config.Scope'
 423    type: object
 424  proto.ConfigModelRequest:
 425    properties:
 426      model:
 427        $ref: '#/definitions/config.SelectedModel'
 428      model_type:
 429        $ref: '#/definitions/config.SelectedModelType'
 430      scope:
 431        $ref: '#/definitions/config.Scope'
 432    type: object
 433  proto.ConfigProviderKeyRequest:
 434    properties:
 435      api_key: {}
 436      provider_id:
 437        type: string
 438      scope:
 439        $ref: '#/definitions/config.Scope'
 440    type: object
 441  proto.ConfigRefreshOAuthRequest:
 442    properties:
 443      provider_id:
 444        type: string
 445      scope:
 446        $ref: '#/definitions/config.Scope'
 447    type: object
 448  proto.ConfigRemoveRequest:
 449    properties:
 450      key:
 451        type: string
 452      scope:
 453        $ref: '#/definitions/config.Scope'
 454    type: object
 455  proto.ConfigSetRequest:
 456    properties:
 457      key:
 458        type: string
 459      scope:
 460        $ref: '#/definitions/config.Scope'
 461      value: {}
 462    type: object
 463  proto.Error:
 464    properties:
 465      message:
 466        type: string
 467    type: object
 468  proto.File:
 469    properties:
 470      content:
 471        type: string
 472      created_at:
 473        type: integer
 474      id:
 475        type: string
 476      path:
 477        type: string
 478      session_id:
 479        type: string
 480      updated_at:
 481        type: integer
 482      version:
 483        type: integer
 484    type: object
 485  proto.FileTrackerReadRequest:
 486    properties:
 487      path:
 488        type: string
 489      session_id:
 490        type: string
 491    type: object
 492  proto.ImportCopilotResponse:
 493    properties:
 494      success:
 495        type: boolean
 496      token: {}
 497    type: object
 498  proto.LSPClientInfo:
 499    properties:
 500      connected_at:
 501        type: string
 502      diagnostic_count:
 503        type: integer
 504      error: {}
 505      name:
 506        type: string
 507      state:
 508        $ref: '#/definitions/lsp.ServerState'
 509    type: object
 510  proto.LSPStartRequest:
 511    properties:
 512      path:
 513        type: string
 514    type: object
 515  proto.MCPClientInfo:
 516    properties:
 517      connected_at:
 518        type: string
 519      error: {}
 520      name:
 521        type: string
 522      prompt_count:
 523        type: integer
 524      resource_count:
 525        type: integer
 526      state:
 527        $ref: '#/definitions/proto.MCPState'
 528      tool_count:
 529        type: integer
 530    type: object
 531  proto.MCPGetPromptRequest:
 532    properties:
 533      args:
 534        additionalProperties:
 535          type: string
 536        type: object
 537      client_id:
 538        type: string
 539      prompt_id:
 540        type: string
 541    type: object
 542  proto.MCPGetPromptResponse:
 543    properties:
 544      prompt:
 545        type: string
 546    type: object
 547  proto.MCPNameRequest:
 548    properties:
 549      name:
 550        type: string
 551    type: object
 552  proto.MCPReadResourceRequest:
 553    properties:
 554      name:
 555        type: string
 556      uri:
 557        type: string
 558    type: object
 559  proto.MCPState:
 560    enum:
 561    - 0
 562    - 1
 563    - 2
 564    - 3
 565    type: integer
 566    x-enum-varnames:
 567    - MCPStateDisabled
 568    - MCPStateStarting
 569    - MCPStateConnected
 570    - MCPStateError
 571  proto.MessageRole:
 572    enum:
 573    - assistant
 574    - user
 575    - system
 576    - tool
 577    type: string
 578    x-enum-varnames:
 579    - Assistant
 580    - User
 581    - System
 582    - Tool
 583  proto.PermissionAction:
 584    enum:
 585    - allow
 586    - allow_session
 587    - deny
 588    type: string
 589    x-enum-varnames:
 590    - PermissionAllow
 591    - PermissionAllowForSession
 592    - PermissionDeny
 593  proto.PermissionGrant:
 594    properties:
 595      action:
 596        $ref: '#/definitions/proto.PermissionAction'
 597      permission:
 598        $ref: '#/definitions/proto.PermissionRequest'
 599    type: object
 600  proto.PermissionRequest:
 601    properties:
 602      action:
 603        type: string
 604      description:
 605        type: string
 606      id:
 607        type: string
 608      params: {}
 609      path:
 610        type: string
 611      session_id:
 612        type: string
 613      tool_call_id:
 614        type: string
 615      tool_name:
 616        type: string
 617    type: object
 618  proto.PermissionSkipRequest:
 619    properties:
 620      skip:
 621        type: boolean
 622    type: object
 623  proto.ProjectInitPromptResponse:
 624    properties:
 625      prompt:
 626        type: string
 627    type: object
 628  proto.ProjectNeedsInitResponse:
 629    properties:
 630      needs_init:
 631        type: boolean
 632    type: object
 633  proto.ServerControl:
 634    properties:
 635      command:
 636        type: string
 637    type: object
 638  proto.Session:
 639    properties:
 640      completion_tokens:
 641        type: integer
 642      cost:
 643        type: number
 644      created_at:
 645        type: integer
 646      id:
 647        type: string
 648      message_count:
 649        type: integer
 650      parent_session_id:
 651        type: string
 652      prompt_tokens:
 653        type: integer
 654      summary_message_id:
 655        type: string
 656      title:
 657        type: string
 658      updated_at:
 659        type: integer
 660    type: object
 661  proto.VersionInfo:
 662    properties:
 663      commit:
 664        type: string
 665      go_version:
 666        type: string
 667      platform:
 668        type: string
 669      version:
 670        type: string
 671    type: object
 672  proto.Workspace:
 673    properties:
 674      config:
 675        $ref: '#/definitions/github_com_charmbracelet_crush_internal_config.Config'
 676      data_dir:
 677        type: string
 678      debug:
 679        type: boolean
 680      env:
 681        items:
 682          type: string
 683        type: array
 684      id:
 685        type: string
 686      path:
 687        type: string
 688      version:
 689        type: string
 690      yolo:
 691        type: boolean
 692    type: object
 693  time.Duration:
 694    enum:
 695    - -9223372036854775808
 696    - 9223372036854775807
 697    - 1
 698    - 1000
 699    - 1000000
 700    - 1000000000
 701    - 60000000000
 702    - 3600000000000
 703    format: int64
 704    type: integer
 705    x-enum-varnames:
 706    - minDuration
 707    - maxDuration
 708    - Nanosecond
 709    - Microsecond
 710    - Millisecond
 711    - Second
 712    - Minute
 713    - Hour
 714info:
 715  contact:
 716    name: Charm
 717    url: https://charm.sh
 718  description: Crush is a terminal-based AI coding assistant. This API is served over
 719    a Unix socket (or Windows named pipe) and provides programmatic access to workspaces,
 720    sessions, agents, LSP, MCP, and more.
 721  license:
 722    name: MIT
 723    url: https://github.com/charmbracelet/crush/blob/main/LICENSE
 724  title: Crush API
 725  version: "1.0"
 726paths:
 727  /config:
 728    get:
 729      produces:
 730      - application/json
 731      responses:
 732        "200":
 733          description: OK
 734          schema:
 735            type: object
 736      summary: Get server config
 737      tags:
 738      - system
 739  /control:
 740    post:
 741      consumes:
 742      - application/json
 743      parameters:
 744      - description: Control command (e.g. shutdown)
 745        in: body
 746        name: request
 747        required: true
 748        schema:
 749          $ref: '#/definitions/proto.ServerControl'
 750      responses:
 751        "200":
 752          description: OK
 753        "400":
 754          description: Bad Request
 755          schema:
 756            $ref: '#/definitions/proto.Error'
 757      summary: Send server control command
 758      tags:
 759      - system
 760  /health:
 761    get:
 762      responses:
 763        "200":
 764          description: OK
 765      summary: Health check
 766      tags:
 767      - system
 768  /version:
 769    get:
 770      produces:
 771      - application/json
 772      responses:
 773        "200":
 774          description: OK
 775          schema:
 776            $ref: '#/definitions/proto.VersionInfo'
 777      summary: Get server version
 778      tags:
 779      - system
 780  /workspaces:
 781    get:
 782      produces:
 783      - application/json
 784      responses:
 785        "200":
 786          description: OK
 787          schema:
 788            items:
 789              $ref: '#/definitions/proto.Workspace'
 790            type: array
 791      summary: List workspaces
 792      tags:
 793      - workspaces
 794    post:
 795      consumes:
 796      - application/json
 797      parameters:
 798      - description: Workspace creation params
 799        in: body
 800        name: request
 801        required: true
 802        schema:
 803          $ref: '#/definitions/proto.Workspace'
 804      produces:
 805      - application/json
 806      responses:
 807        "200":
 808          description: OK
 809          schema:
 810            $ref: '#/definitions/proto.Workspace'
 811        "400":
 812          description: Bad Request
 813          schema:
 814            $ref: '#/definitions/proto.Error'
 815        "500":
 816          description: Internal Server Error
 817          schema:
 818            $ref: '#/definitions/proto.Error'
 819      summary: Create workspace
 820      tags:
 821      - workspaces
 822  /workspaces/{id}:
 823    delete:
 824      parameters:
 825      - description: Workspace ID
 826        in: path
 827        name: id
 828        required: true
 829        type: string
 830      responses:
 831        "200":
 832          description: OK
 833        "404":
 834          description: Not Found
 835          schema:
 836            $ref: '#/definitions/proto.Error'
 837      summary: Delete workspace
 838      tags:
 839      - workspaces
 840    get:
 841      parameters:
 842      - description: Workspace ID
 843        in: path
 844        name: id
 845        required: true
 846        type: string
 847      produces:
 848      - application/json
 849      responses:
 850        "200":
 851          description: OK
 852          schema:
 853            $ref: '#/definitions/proto.Workspace'
 854        "404":
 855          description: Not Found
 856          schema:
 857            $ref: '#/definitions/proto.Error'
 858        "500":
 859          description: Internal Server Error
 860          schema:
 861            $ref: '#/definitions/proto.Error'
 862      summary: Get workspace
 863      tags:
 864      - workspaces
 865  /workspaces/{id}/agent:
 866    get:
 867      parameters:
 868      - description: Workspace ID
 869        in: path
 870        name: id
 871        required: true
 872        type: string
 873      produces:
 874      - application/json
 875      responses:
 876        "200":
 877          description: OK
 878          schema:
 879            $ref: '#/definitions/proto.AgentInfo'
 880        "404":
 881          description: Not Found
 882          schema:
 883            $ref: '#/definitions/proto.Error'
 884        "500":
 885          description: Internal Server Error
 886          schema:
 887            $ref: '#/definitions/proto.Error'
 888      summary: Get agent info
 889      tags:
 890      - agent
 891    post:
 892      consumes:
 893      - application/json
 894      parameters:
 895      - description: Workspace ID
 896        in: path
 897        name: id
 898        required: true
 899        type: string
 900      - description: Agent message
 901        in: body
 902        name: request
 903        required: true
 904        schema:
 905          $ref: '#/definitions/proto.AgentMessage'
 906      responses:
 907        "200":
 908          description: OK
 909        "400":
 910          description: Bad Request
 911          schema:
 912            $ref: '#/definitions/proto.Error'
 913        "404":
 914          description: Not Found
 915          schema:
 916            $ref: '#/definitions/proto.Error'
 917        "500":
 918          description: Internal Server Error
 919          schema:
 920            $ref: '#/definitions/proto.Error'
 921      summary: Send message to agent
 922      tags:
 923      - agent
 924  /workspaces/{id}/agent/default-small-model:
 925    get:
 926      parameters:
 927      - description: Workspace ID
 928        in: path
 929        name: id
 930        required: true
 931        type: string
 932      - description: Provider ID
 933        in: query
 934        name: provider_id
 935        type: string
 936      produces:
 937      - application/json
 938      responses:
 939        "200":
 940          description: OK
 941          schema:
 942            type: object
 943        "404":
 944          description: Not Found
 945          schema:
 946            $ref: '#/definitions/proto.Error'
 947        "500":
 948          description: Internal Server Error
 949          schema:
 950            $ref: '#/definitions/proto.Error'
 951      summary: Get default small model
 952      tags:
 953      - agent
 954  /workspaces/{id}/agent/init:
 955    post:
 956      parameters:
 957      - description: Workspace ID
 958        in: path
 959        name: id
 960        required: true
 961        type: string
 962      responses:
 963        "200":
 964          description: OK
 965        "404":
 966          description: Not Found
 967          schema:
 968            $ref: '#/definitions/proto.Error'
 969        "500":
 970          description: Internal Server Error
 971          schema:
 972            $ref: '#/definitions/proto.Error'
 973      summary: Initialize agent
 974      tags:
 975      - agent
 976  /workspaces/{id}/agent/sessions/{sid}:
 977    get:
 978      parameters:
 979      - description: Workspace ID
 980        in: path
 981        name: id
 982        required: true
 983        type: string
 984      - description: Session ID
 985        in: path
 986        name: sid
 987        required: true
 988        type: string
 989      produces:
 990      - application/json
 991      responses:
 992        "200":
 993          description: OK
 994          schema:
 995            $ref: '#/definitions/proto.AgentSession'
 996        "404":
 997          description: Not Found
 998          schema:
 999            $ref: '#/definitions/proto.Error'
1000        "500":
1001          description: Internal Server Error
1002          schema:
1003            $ref: '#/definitions/proto.Error'
1004      summary: Get agent session
1005      tags:
1006      - agent
1007  /workspaces/{id}/agent/sessions/{sid}/cancel:
1008    post:
1009      parameters:
1010      - description: Workspace ID
1011        in: path
1012        name: id
1013        required: true
1014        type: string
1015      - description: Session ID
1016        in: path
1017        name: sid
1018        required: true
1019        type: string
1020      responses:
1021        "200":
1022          description: OK
1023        "404":
1024          description: Not Found
1025          schema:
1026            $ref: '#/definitions/proto.Error'
1027        "500":
1028          description: Internal Server Error
1029          schema:
1030            $ref: '#/definitions/proto.Error'
1031      summary: Cancel agent session
1032      tags:
1033      - agent
1034  /workspaces/{id}/agent/sessions/{sid}/prompts/clear:
1035    post:
1036      parameters:
1037      - description: Workspace ID
1038        in: path
1039        name: id
1040        required: true
1041        type: string
1042      - description: Session ID
1043        in: path
1044        name: sid
1045        required: true
1046        type: string
1047      responses:
1048        "200":
1049          description: OK
1050        "404":
1051          description: Not Found
1052          schema:
1053            $ref: '#/definitions/proto.Error'
1054        "500":
1055          description: Internal Server Error
1056          schema:
1057            $ref: '#/definitions/proto.Error'
1058      summary: Clear prompt queue
1059      tags:
1060      - agent
1061  /workspaces/{id}/agent/sessions/{sid}/prompts/list:
1062    get:
1063      parameters:
1064      - description: Workspace ID
1065        in: path
1066        name: id
1067        required: true
1068        type: string
1069      - description: Session ID
1070        in: path
1071        name: sid
1072        required: true
1073        type: string
1074      produces:
1075      - application/json
1076      responses:
1077        "200":
1078          description: OK
1079          schema:
1080            items:
1081              type: string
1082            type: array
1083        "404":
1084          description: Not Found
1085          schema:
1086            $ref: '#/definitions/proto.Error'
1087        "500":
1088          description: Internal Server Error
1089          schema:
1090            $ref: '#/definitions/proto.Error'
1091      summary: List queued prompts
1092      tags:
1093      - agent
1094  /workspaces/{id}/agent/sessions/{sid}/prompts/queued:
1095    get:
1096      parameters:
1097      - description: Workspace ID
1098        in: path
1099        name: id
1100        required: true
1101        type: string
1102      - description: Session ID
1103        in: path
1104        name: sid
1105        required: true
1106        type: string
1107      produces:
1108      - application/json
1109      responses:
1110        "200":
1111          description: OK
1112          schema:
1113            type: object
1114        "404":
1115          description: Not Found
1116          schema:
1117            $ref: '#/definitions/proto.Error'
1118        "500":
1119          description: Internal Server Error
1120          schema:
1121            $ref: '#/definitions/proto.Error'
1122      summary: Get queued prompt status
1123      tags:
1124      - agent
1125  /workspaces/{id}/agent/sessions/{sid}/summarize:
1126    post:
1127      parameters:
1128      - description: Workspace ID
1129        in: path
1130        name: id
1131        required: true
1132        type: string
1133      - description: Session ID
1134        in: path
1135        name: sid
1136        required: true
1137        type: string
1138      responses:
1139        "200":
1140          description: OK
1141        "404":
1142          description: Not Found
1143          schema:
1144            $ref: '#/definitions/proto.Error'
1145        "500":
1146          description: Internal Server Error
1147          schema:
1148            $ref: '#/definitions/proto.Error'
1149      summary: Summarize session
1150      tags:
1151      - agent
1152  /workspaces/{id}/agent/update:
1153    post:
1154      parameters:
1155      - description: Workspace ID
1156        in: path
1157        name: id
1158        required: true
1159        type: string
1160      responses:
1161        "200":
1162          description: OK
1163        "404":
1164          description: Not Found
1165          schema:
1166            $ref: '#/definitions/proto.Error'
1167        "500":
1168          description: Internal Server Error
1169          schema:
1170            $ref: '#/definitions/proto.Error'
1171      summary: Update agent
1172      tags:
1173      - agent
1174  /workspaces/{id}/config:
1175    get:
1176      parameters:
1177      - description: Workspace ID
1178        in: path
1179        name: id
1180        required: true
1181        type: string
1182      produces:
1183      - application/json
1184      responses:
1185        "200":
1186          description: OK
1187          schema:
1188            type: object
1189        "404":
1190          description: Not Found
1191          schema:
1192            $ref: '#/definitions/proto.Error'
1193        "500":
1194          description: Internal Server Error
1195          schema:
1196            $ref: '#/definitions/proto.Error'
1197      summary: Get workspace config
1198      tags:
1199      - workspaces
1200  /workspaces/{id}/config/compact:
1201    post:
1202      consumes:
1203      - application/json
1204      parameters:
1205      - description: Workspace ID
1206        in: path
1207        name: id
1208        required: true
1209        type: string
1210      - description: Config compact request
1211        in: body
1212        name: request
1213        required: true
1214        schema:
1215          $ref: '#/definitions/proto.ConfigCompactRequest'
1216      responses:
1217        "200":
1218          description: OK
1219        "400":
1220          description: Bad Request
1221          schema:
1222            $ref: '#/definitions/proto.Error'
1223        "404":
1224          description: Not Found
1225          schema:
1226            $ref: '#/definitions/proto.Error'
1227        "500":
1228          description: Internal Server Error
1229          schema:
1230            $ref: '#/definitions/proto.Error'
1231      summary: Set compact mode
1232      tags:
1233      - config
1234  /workspaces/{id}/config/import-copilot:
1235    post:
1236      parameters:
1237      - description: Workspace ID
1238        in: path
1239        name: id
1240        required: true
1241        type: string
1242      produces:
1243      - application/json
1244      responses:
1245        "200":
1246          description: OK
1247          schema:
1248            $ref: '#/definitions/proto.ImportCopilotResponse'
1249        "404":
1250          description: Not Found
1251          schema:
1252            $ref: '#/definitions/proto.Error'
1253        "500":
1254          description: Internal Server Error
1255          schema:
1256            $ref: '#/definitions/proto.Error'
1257      summary: Import Copilot credentials
1258      tags:
1259      - config
1260  /workspaces/{id}/config/model:
1261    post:
1262      consumes:
1263      - application/json
1264      parameters:
1265      - description: Workspace ID
1266        in: path
1267        name: id
1268        required: true
1269        type: string
1270      - description: Config model request
1271        in: body
1272        name: request
1273        required: true
1274        schema:
1275          $ref: '#/definitions/proto.ConfigModelRequest'
1276      responses:
1277        "200":
1278          description: OK
1279        "400":
1280          description: Bad Request
1281          schema:
1282            $ref: '#/definitions/proto.Error'
1283        "404":
1284          description: Not Found
1285          schema:
1286            $ref: '#/definitions/proto.Error'
1287        "500":
1288          description: Internal Server Error
1289          schema:
1290            $ref: '#/definitions/proto.Error'
1291      summary: Set the preferred model
1292      tags:
1293      - config
1294  /workspaces/{id}/config/provider-key:
1295    post:
1296      consumes:
1297      - application/json
1298      parameters:
1299      - description: Workspace ID
1300        in: path
1301        name: id
1302        required: true
1303        type: string
1304      - description: Config provider key request
1305        in: body
1306        name: request
1307        required: true
1308        schema:
1309          $ref: '#/definitions/proto.ConfigProviderKeyRequest'
1310      responses:
1311        "200":
1312          description: OK
1313        "400":
1314          description: Bad Request
1315          schema:
1316            $ref: '#/definitions/proto.Error'
1317        "404":
1318          description: Not Found
1319          schema:
1320            $ref: '#/definitions/proto.Error'
1321        "500":
1322          description: Internal Server Error
1323          schema:
1324            $ref: '#/definitions/proto.Error'
1325      summary: Set provider API key
1326      tags:
1327      - config
1328  /workspaces/{id}/config/refresh-oauth:
1329    post:
1330      consumes:
1331      - application/json
1332      parameters:
1333      - description: Workspace ID
1334        in: path
1335        name: id
1336        required: true
1337        type: string
1338      - description: Refresh OAuth request
1339        in: body
1340        name: request
1341        required: true
1342        schema:
1343          $ref: '#/definitions/proto.ConfigRefreshOAuthRequest'
1344      responses:
1345        "200":
1346          description: OK
1347        "400":
1348          description: Bad Request
1349          schema:
1350            $ref: '#/definitions/proto.Error'
1351        "404":
1352          description: Not Found
1353          schema:
1354            $ref: '#/definitions/proto.Error'
1355        "500":
1356          description: Internal Server Error
1357          schema:
1358            $ref: '#/definitions/proto.Error'
1359      summary: Refresh OAuth token
1360      tags:
1361      - config
1362  /workspaces/{id}/config/remove:
1363    post:
1364      consumes:
1365      - application/json
1366      parameters:
1367      - description: Workspace ID
1368        in: path
1369        name: id
1370        required: true
1371        type: string
1372      - description: Config remove request
1373        in: body
1374        name: request
1375        required: true
1376        schema:
1377          $ref: '#/definitions/proto.ConfigRemoveRequest'
1378      responses:
1379        "200":
1380          description: OK
1381        "400":
1382          description: Bad Request
1383          schema:
1384            $ref: '#/definitions/proto.Error'
1385        "404":
1386          description: Not Found
1387          schema:
1388            $ref: '#/definitions/proto.Error'
1389        "500":
1390          description: Internal Server Error
1391          schema:
1392            $ref: '#/definitions/proto.Error'
1393      summary: Remove a config field
1394      tags:
1395      - config
1396  /workspaces/{id}/config/set:
1397    post:
1398      consumes:
1399      - application/json
1400      parameters:
1401      - description: Workspace ID
1402        in: path
1403        name: id
1404        required: true
1405        type: string
1406      - description: Config set request
1407        in: body
1408        name: request
1409        required: true
1410        schema:
1411          $ref: '#/definitions/proto.ConfigSetRequest'
1412      responses:
1413        "200":
1414          description: OK
1415        "400":
1416          description: Bad Request
1417          schema:
1418            $ref: '#/definitions/proto.Error'
1419        "404":
1420          description: Not Found
1421          schema:
1422            $ref: '#/definitions/proto.Error'
1423        "500":
1424          description: Internal Server Error
1425          schema:
1426            $ref: '#/definitions/proto.Error'
1427      summary: Set a config field
1428      tags:
1429      - config
1430  /workspaces/{id}/events:
1431    get:
1432      parameters:
1433      - description: Workspace ID
1434        in: path
1435        name: id
1436        required: true
1437        type: string
1438      produces:
1439      - text/event-stream
1440      responses:
1441        "200":
1442          description: OK
1443        "404":
1444          description: Not Found
1445          schema:
1446            $ref: '#/definitions/proto.Error'
1447        "500":
1448          description: Internal Server Error
1449          schema:
1450            $ref: '#/definitions/proto.Error'
1451      summary: Stream workspace events (SSE)
1452      tags:
1453      - workspaces
1454  /workspaces/{id}/filetracker/lastread:
1455    get:
1456      parameters:
1457      - description: Workspace ID
1458        in: path
1459        name: id
1460        required: true
1461        type: string
1462      - description: Session ID
1463        in: query
1464        name: session_id
1465        type: string
1466      - description: File path
1467        in: query
1468        name: path
1469        required: true
1470        type: string
1471      produces:
1472      - application/json
1473      responses:
1474        "200":
1475          description: OK
1476          schema:
1477            type: object
1478        "404":
1479          description: Not Found
1480          schema:
1481            $ref: '#/definitions/proto.Error'
1482        "500":
1483          description: Internal Server Error
1484          schema:
1485            $ref: '#/definitions/proto.Error'
1486      summary: Get last read time for file
1487      tags:
1488      - filetracker
1489  /workspaces/{id}/filetracker/read:
1490    post:
1491      consumes:
1492      - application/json
1493      parameters:
1494      - description: Workspace ID
1495        in: path
1496        name: id
1497        required: true
1498        type: string
1499      - description: File tracker read request
1500        in: body
1501        name: request
1502        required: true
1503        schema:
1504          $ref: '#/definitions/proto.FileTrackerReadRequest'
1505      responses:
1506        "200":
1507          description: OK
1508        "400":
1509          description: Bad Request
1510          schema:
1511            $ref: '#/definitions/proto.Error'
1512        "404":
1513          description: Not Found
1514          schema:
1515            $ref: '#/definitions/proto.Error'
1516        "500":
1517          description: Internal Server Error
1518          schema:
1519            $ref: '#/definitions/proto.Error'
1520      summary: Record file read
1521      tags:
1522      - filetracker
1523  /workspaces/{id}/lsps:
1524    get:
1525      parameters:
1526      - description: Workspace ID
1527        in: path
1528        name: id
1529        required: true
1530        type: string
1531      produces:
1532      - application/json
1533      responses:
1534        "200":
1535          description: OK
1536          schema:
1537            additionalProperties:
1538              $ref: '#/definitions/proto.LSPClientInfo'
1539            type: object
1540        "404":
1541          description: Not Found
1542          schema:
1543            $ref: '#/definitions/proto.Error'
1544        "500":
1545          description: Internal Server Error
1546          schema:
1547            $ref: '#/definitions/proto.Error'
1548      summary: List LSP clients
1549      tags:
1550      - lsp
1551  /workspaces/{id}/lsps/{lsp}/diagnostics:
1552    get:
1553      parameters:
1554      - description: Workspace ID
1555        in: path
1556        name: id
1557        required: true
1558        type: string
1559      - description: LSP client name
1560        in: path
1561        name: lsp
1562        required: true
1563        type: string
1564      produces:
1565      - application/json
1566      responses:
1567        "200":
1568          description: OK
1569          schema:
1570            type: object
1571        "404":
1572          description: Not Found
1573          schema:
1574            $ref: '#/definitions/proto.Error'
1575        "500":
1576          description: Internal Server Error
1577          schema:
1578            $ref: '#/definitions/proto.Error'
1579      summary: Get LSP diagnostics
1580      tags:
1581      - lsp
1582  /workspaces/{id}/lsps/start:
1583    post:
1584      consumes:
1585      - application/json
1586      parameters:
1587      - description: Workspace ID
1588        in: path
1589        name: id
1590        required: true
1591        type: string
1592      - description: LSP start request
1593        in: body
1594        name: request
1595        required: true
1596        schema:
1597          $ref: '#/definitions/proto.LSPStartRequest'
1598      responses:
1599        "200":
1600          description: OK
1601        "400":
1602          description: Bad Request
1603          schema:
1604            $ref: '#/definitions/proto.Error'
1605        "404":
1606          description: Not Found
1607          schema:
1608            $ref: '#/definitions/proto.Error'
1609        "500":
1610          description: Internal Server Error
1611          schema:
1612            $ref: '#/definitions/proto.Error'
1613      summary: Start LSP server
1614      tags:
1615      - lsp
1616  /workspaces/{id}/lsps/stop:
1617    post:
1618      parameters:
1619      - description: Workspace ID
1620        in: path
1621        name: id
1622        required: true
1623        type: string
1624      responses:
1625        "200":
1626          description: OK
1627        "404":
1628          description: Not Found
1629          schema:
1630            $ref: '#/definitions/proto.Error'
1631        "500":
1632          description: Internal Server Error
1633          schema:
1634            $ref: '#/definitions/proto.Error'
1635      summary: Stop all LSP servers
1636      tags:
1637      - lsp
1638  /workspaces/{id}/mcp/get-prompt:
1639    post:
1640      consumes:
1641      - application/json
1642      parameters:
1643      - description: Workspace ID
1644        in: path
1645        name: id
1646        required: true
1647        type: string
1648      - description: MCP get prompt request
1649        in: body
1650        name: request
1651        required: true
1652        schema:
1653          $ref: '#/definitions/proto.MCPGetPromptRequest'
1654      produces:
1655      - application/json
1656      responses:
1657        "200":
1658          description: OK
1659          schema:
1660            $ref: '#/definitions/proto.MCPGetPromptResponse'
1661        "400":
1662          description: Bad Request
1663          schema:
1664            $ref: '#/definitions/proto.Error'
1665        "404":
1666          description: Not Found
1667          schema:
1668            $ref: '#/definitions/proto.Error'
1669        "500":
1670          description: Internal Server Error
1671          schema:
1672            $ref: '#/definitions/proto.Error'
1673      summary: Get MCP prompt
1674      tags:
1675      - mcp
1676  /workspaces/{id}/mcp/read-resource:
1677    post:
1678      consumes:
1679      - application/json
1680      parameters:
1681      - description: Workspace ID
1682        in: path
1683        name: id
1684        required: true
1685        type: string
1686      - description: MCP read resource request
1687        in: body
1688        name: request
1689        required: true
1690        schema:
1691          $ref: '#/definitions/proto.MCPReadResourceRequest'
1692      produces:
1693      - application/json
1694      responses:
1695        "200":
1696          description: OK
1697          schema:
1698            type: object
1699        "400":
1700          description: Bad Request
1701          schema:
1702            $ref: '#/definitions/proto.Error'
1703        "404":
1704          description: Not Found
1705          schema:
1706            $ref: '#/definitions/proto.Error'
1707        "500":
1708          description: Internal Server Error
1709          schema:
1710            $ref: '#/definitions/proto.Error'
1711      summary: Read MCP resource
1712      tags:
1713      - mcp
1714  /workspaces/{id}/mcp/refresh-prompts:
1715    post:
1716      consumes:
1717      - application/json
1718      parameters:
1719      - description: Workspace ID
1720        in: path
1721        name: id
1722        required: true
1723        type: string
1724      - description: MCP name request
1725        in: body
1726        name: request
1727        required: true
1728        schema:
1729          $ref: '#/definitions/proto.MCPNameRequest'
1730      responses:
1731        "200":
1732          description: OK
1733        "400":
1734          description: Bad Request
1735          schema:
1736            $ref: '#/definitions/proto.Error'
1737        "404":
1738          description: Not Found
1739          schema:
1740            $ref: '#/definitions/proto.Error'
1741        "500":
1742          description: Internal Server Error
1743          schema:
1744            $ref: '#/definitions/proto.Error'
1745      summary: Refresh MCP prompts
1746      tags:
1747      - mcp
1748  /workspaces/{id}/mcp/refresh-resources:
1749    post:
1750      consumes:
1751      - application/json
1752      parameters:
1753      - description: Workspace ID
1754        in: path
1755        name: id
1756        required: true
1757        type: string
1758      - description: MCP name request
1759        in: body
1760        name: request
1761        required: true
1762        schema:
1763          $ref: '#/definitions/proto.MCPNameRequest'
1764      responses:
1765        "200":
1766          description: OK
1767        "400":
1768          description: Bad Request
1769          schema:
1770            $ref: '#/definitions/proto.Error'
1771        "404":
1772          description: Not Found
1773          schema:
1774            $ref: '#/definitions/proto.Error'
1775        "500":
1776          description: Internal Server Error
1777          schema:
1778            $ref: '#/definitions/proto.Error'
1779      summary: Refresh MCP resources
1780      tags:
1781      - mcp
1782  /workspaces/{id}/mcp/refresh-tools:
1783    post:
1784      consumes:
1785      - application/json
1786      parameters:
1787      - description: Workspace ID
1788        in: path
1789        name: id
1790        required: true
1791        type: string
1792      - description: MCP name request
1793        in: body
1794        name: request
1795        required: true
1796        schema:
1797          $ref: '#/definitions/proto.MCPNameRequest'
1798      responses:
1799        "200":
1800          description: OK
1801        "400":
1802          description: Bad Request
1803          schema:
1804            $ref: '#/definitions/proto.Error'
1805        "404":
1806          description: Not Found
1807          schema:
1808            $ref: '#/definitions/proto.Error'
1809        "500":
1810          description: Internal Server Error
1811          schema:
1812            $ref: '#/definitions/proto.Error'
1813      summary: Refresh MCP tools
1814      tags:
1815      - mcp
1816  /workspaces/{id}/mcp/states:
1817    get:
1818      parameters:
1819      - description: Workspace ID
1820        in: path
1821        name: id
1822        required: true
1823        type: string
1824      produces:
1825      - application/json
1826      responses:
1827        "200":
1828          description: OK
1829          schema:
1830            additionalProperties:
1831              $ref: '#/definitions/proto.MCPClientInfo'
1832            type: object
1833        "404":
1834          description: Not Found
1835          schema:
1836            $ref: '#/definitions/proto.Error'
1837        "500":
1838          description: Internal Server Error
1839          schema:
1840            $ref: '#/definitions/proto.Error'
1841      summary: Get MCP client states
1842      tags:
1843      - mcp
1844  /workspaces/{id}/messages/user:
1845    get:
1846      parameters:
1847      - description: Workspace ID
1848        in: path
1849        name: id
1850        required: true
1851        type: string
1852      produces:
1853      - application/json
1854      responses:
1855        "200":
1856          description: OK
1857          schema:
1858            items:
1859              $ref: '#/definitions/github_com_charmbracelet_crush_internal_proto.Message'
1860            type: array
1861        "404":
1862          description: Not Found
1863          schema:
1864            $ref: '#/definitions/proto.Error'
1865        "500":
1866          description: Internal Server Error
1867          schema:
1868            $ref: '#/definitions/proto.Error'
1869      summary: Get all user messages for workspace
1870      tags:
1871      - workspaces
1872  /workspaces/{id}/permissions/grant:
1873    post:
1874      consumes:
1875      - application/json
1876      parameters:
1877      - description: Workspace ID
1878        in: path
1879        name: id
1880        required: true
1881        type: string
1882      - description: Permission grant
1883        in: body
1884        name: request
1885        required: true
1886        schema:
1887          $ref: '#/definitions/proto.PermissionGrant'
1888      responses:
1889        "200":
1890          description: OK
1891        "400":
1892          description: Bad Request
1893          schema:
1894            $ref: '#/definitions/proto.Error'
1895        "404":
1896          description: Not Found
1897          schema:
1898            $ref: '#/definitions/proto.Error'
1899        "500":
1900          description: Internal Server Error
1901          schema:
1902            $ref: '#/definitions/proto.Error'
1903      summary: Grant permission
1904      tags:
1905      - permissions
1906  /workspaces/{id}/permissions/skip:
1907    get:
1908      parameters:
1909      - description: Workspace ID
1910        in: path
1911        name: id
1912        required: true
1913        type: string
1914      produces:
1915      - application/json
1916      responses:
1917        "200":
1918          description: OK
1919          schema:
1920            $ref: '#/definitions/proto.PermissionSkipRequest'
1921        "404":
1922          description: Not Found
1923          schema:
1924            $ref: '#/definitions/proto.Error'
1925        "500":
1926          description: Internal Server Error
1927          schema:
1928            $ref: '#/definitions/proto.Error'
1929      summary: Get skip permissions status
1930      tags:
1931      - permissions
1932    post:
1933      consumes:
1934      - application/json
1935      parameters:
1936      - description: Workspace ID
1937        in: path
1938        name: id
1939        required: true
1940        type: string
1941      - description: Permission skip request
1942        in: body
1943        name: request
1944        required: true
1945        schema:
1946          $ref: '#/definitions/proto.PermissionSkipRequest'
1947      responses:
1948        "200":
1949          description: OK
1950        "400":
1951          description: Bad Request
1952          schema:
1953            $ref: '#/definitions/proto.Error'
1954        "404":
1955          description: Not Found
1956          schema:
1957            $ref: '#/definitions/proto.Error'
1958        "500":
1959          description: Internal Server Error
1960          schema:
1961            $ref: '#/definitions/proto.Error'
1962      summary: Set skip permissions
1963      tags:
1964      - permissions
1965  /workspaces/{id}/project/init:
1966    post:
1967      parameters:
1968      - description: Workspace ID
1969        in: path
1970        name: id
1971        required: true
1972        type: string
1973      responses:
1974        "200":
1975          description: OK
1976        "404":
1977          description: Not Found
1978          schema:
1979            $ref: '#/definitions/proto.Error'
1980        "500":
1981          description: Internal Server Error
1982          schema:
1983            $ref: '#/definitions/proto.Error'
1984      summary: Mark project as initialized
1985      tags:
1986      - project
1987  /workspaces/{id}/project/init-prompt:
1988    get:
1989      parameters:
1990      - description: Workspace ID
1991        in: path
1992        name: id
1993        required: true
1994        type: string
1995      produces:
1996      - application/json
1997      responses:
1998        "200":
1999          description: OK
2000          schema:
2001            $ref: '#/definitions/proto.ProjectInitPromptResponse'
2002        "404":
2003          description: Not Found
2004          schema:
2005            $ref: '#/definitions/proto.Error'
2006        "500":
2007          description: Internal Server Error
2008          schema:
2009            $ref: '#/definitions/proto.Error'
2010      summary: Get project initialization prompt
2011      tags:
2012      - project
2013  /workspaces/{id}/project/needs-init:
2014    get:
2015      parameters:
2016      - description: Workspace ID
2017        in: path
2018        name: id
2019        required: true
2020        type: string
2021      produces:
2022      - application/json
2023      responses:
2024        "200":
2025          description: OK
2026          schema:
2027            $ref: '#/definitions/proto.ProjectNeedsInitResponse'
2028        "404":
2029          description: Not Found
2030          schema:
2031            $ref: '#/definitions/proto.Error'
2032        "500":
2033          description: Internal Server Error
2034          schema:
2035            $ref: '#/definitions/proto.Error'
2036      summary: Check if project needs initialization
2037      tags:
2038      - project
2039  /workspaces/{id}/providers:
2040    get:
2041      parameters:
2042      - description: Workspace ID
2043        in: path
2044        name: id
2045        required: true
2046        type: string
2047      produces:
2048      - application/json
2049      responses:
2050        "200":
2051          description: OK
2052          schema:
2053            type: object
2054        "404":
2055          description: Not Found
2056          schema:
2057            $ref: '#/definitions/proto.Error'
2058        "500":
2059          description: Internal Server Error
2060          schema:
2061            $ref: '#/definitions/proto.Error'
2062      summary: Get workspace providers
2063      tags:
2064      - workspaces
2065  /workspaces/{id}/sessions:
2066    get:
2067      parameters:
2068      - description: Workspace ID
2069        in: path
2070        name: id
2071        required: true
2072        type: string
2073      produces:
2074      - application/json
2075      responses:
2076        "200":
2077          description: OK
2078          schema:
2079            items:
2080              $ref: '#/definitions/proto.Session'
2081            type: array
2082        "404":
2083          description: Not Found
2084          schema:
2085            $ref: '#/definitions/proto.Error'
2086        "500":
2087          description: Internal Server Error
2088          schema:
2089            $ref: '#/definitions/proto.Error'
2090      summary: List sessions
2091      tags:
2092      - sessions
2093    post:
2094      consumes:
2095      - application/json
2096      parameters:
2097      - description: Workspace ID
2098        in: path
2099        name: id
2100        required: true
2101        type: string
2102      - description: Session creation params (title)
2103        in: body
2104        name: request
2105        required: true
2106        schema:
2107          $ref: '#/definitions/proto.Session'
2108      produces:
2109      - application/json
2110      responses:
2111        "200":
2112          description: OK
2113          schema:
2114            $ref: '#/definitions/proto.Session'
2115        "400":
2116          description: Bad Request
2117          schema:
2118            $ref: '#/definitions/proto.Error'
2119        "404":
2120          description: Not Found
2121          schema:
2122            $ref: '#/definitions/proto.Error'
2123        "500":
2124          description: Internal Server Error
2125          schema:
2126            $ref: '#/definitions/proto.Error'
2127      summary: Create session
2128      tags:
2129      - sessions
2130  /workspaces/{id}/sessions/{sid}:
2131    delete:
2132      parameters:
2133      - description: Workspace ID
2134        in: path
2135        name: id
2136        required: true
2137        type: string
2138      - description: Session ID
2139        in: path
2140        name: sid
2141        required: true
2142        type: string
2143      responses:
2144        "200":
2145          description: OK
2146        "404":
2147          description: Not Found
2148          schema:
2149            $ref: '#/definitions/proto.Error'
2150        "500":
2151          description: Internal Server Error
2152          schema:
2153            $ref: '#/definitions/proto.Error'
2154      summary: Delete session
2155      tags:
2156      - sessions
2157    get:
2158      parameters:
2159      - description: Workspace ID
2160        in: path
2161        name: id
2162        required: true
2163        type: string
2164      - description: Session ID
2165        in: path
2166        name: sid
2167        required: true
2168        type: string
2169      produces:
2170      - application/json
2171      responses:
2172        "200":
2173          description: OK
2174          schema:
2175            $ref: '#/definitions/proto.Session'
2176        "404":
2177          description: Not Found
2178          schema:
2179            $ref: '#/definitions/proto.Error'
2180        "500":
2181          description: Internal Server Error
2182          schema:
2183            $ref: '#/definitions/proto.Error'
2184      summary: Get session
2185      tags:
2186      - sessions
2187    put:
2188      consumes:
2189      - application/json
2190      parameters:
2191      - description: Workspace ID
2192        in: path
2193        name: id
2194        required: true
2195        type: string
2196      - description: Session ID
2197        in: path
2198        name: sid
2199        required: true
2200        type: string
2201      - description: Updated session
2202        in: body
2203        name: request
2204        required: true
2205        schema:
2206          $ref: '#/definitions/proto.Session'
2207      produces:
2208      - application/json
2209      responses:
2210        "200":
2211          description: OK
2212          schema:
2213            $ref: '#/definitions/proto.Session'
2214        "400":
2215          description: Bad Request
2216          schema:
2217            $ref: '#/definitions/proto.Error'
2218        "404":
2219          description: Not Found
2220          schema:
2221            $ref: '#/definitions/proto.Error'
2222        "500":
2223          description: Internal Server Error
2224          schema:
2225            $ref: '#/definitions/proto.Error'
2226      summary: Update session
2227      tags:
2228      - sessions
2229  /workspaces/{id}/sessions/{sid}/filetracker/files:
2230    get:
2231      parameters:
2232      - description: Workspace ID
2233        in: path
2234        name: id
2235        required: true
2236        type: string
2237      - description: Session ID
2238        in: path
2239        name: sid
2240        required: true
2241        type: string
2242      produces:
2243      - application/json
2244      responses:
2245        "200":
2246          description: OK
2247          schema:
2248            items:
2249              type: string
2250            type: array
2251        "404":
2252          description: Not Found
2253          schema:
2254            $ref: '#/definitions/proto.Error'
2255        "500":
2256          description: Internal Server Error
2257          schema:
2258            $ref: '#/definitions/proto.Error'
2259      summary: List tracked files for session
2260      tags:
2261      - filetracker
2262  /workspaces/{id}/sessions/{sid}/history:
2263    get:
2264      parameters:
2265      - description: Workspace ID
2266        in: path
2267        name: id
2268        required: true
2269        type: string
2270      - description: Session ID
2271        in: path
2272        name: sid
2273        required: true
2274        type: string
2275      produces:
2276      - application/json
2277      responses:
2278        "200":
2279          description: OK
2280          schema:
2281            items:
2282              $ref: '#/definitions/proto.File'
2283            type: array
2284        "404":
2285          description: Not Found
2286          schema:
2287            $ref: '#/definitions/proto.Error'
2288        "500":
2289          description: Internal Server Error
2290          schema:
2291            $ref: '#/definitions/proto.Error'
2292      summary: Get session history
2293      tags:
2294      - sessions
2295  /workspaces/{id}/sessions/{sid}/messages:
2296    get:
2297      parameters:
2298      - description: Workspace ID
2299        in: path
2300        name: id
2301        required: true
2302        type: string
2303      - description: Session ID
2304        in: path
2305        name: sid
2306        required: true
2307        type: string
2308      produces:
2309      - application/json
2310      responses:
2311        "200":
2312          description: OK
2313          schema:
2314            items:
2315              $ref: '#/definitions/github_com_charmbracelet_crush_internal_proto.Message'
2316            type: array
2317        "404":
2318          description: Not Found
2319          schema:
2320            $ref: '#/definitions/proto.Error'
2321        "500":
2322          description: Internal Server Error
2323          schema:
2324            $ref: '#/definitions/proto.Error'
2325      summary: Get session messages
2326      tags:
2327      - sessions
2328  /workspaces/{id}/sessions/{sid}/messages/user:
2329    get:
2330      parameters:
2331      - description: Workspace ID
2332        in: path
2333        name: id
2334        required: true
2335        type: string
2336      - description: Session ID
2337        in: path
2338        name: sid
2339        required: true
2340        type: string
2341      produces:
2342      - application/json
2343      responses:
2344        "200":
2345          description: OK
2346          schema:
2347            items:
2348              $ref: '#/definitions/github_com_charmbracelet_crush_internal_proto.Message'
2349            type: array
2350        "404":
2351          description: Not Found
2352          schema:
2353            $ref: '#/definitions/proto.Error'
2354        "500":
2355          description: Internal Server Error
2356          schema:
2357            $ref: '#/definitions/proto.Error'
2358      summary: Get user messages for session
2359      tags:
2360      - sessions
2361swagger: "2.0"