> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentsfleet.net/llms.txt
> Use this file to discover all available pages before exploring further.

# List approval gates for a workspace

> Returns approval gates newest-first, in every state unless `status` narrows them. Each row surfaces the fleet's proposed action, gathered evidence, blast-radius assessment, and timeout countdown. Filter by fleet, gate kind, or status. Cursor pagination over (created_at, id) so concurrent inserts don't cause silent skips. 



## OpenAPI

````yaml https://raw.githubusercontent.com/agentsfleet/agentsfleet/main/public/openapi.json get /v1/workspaces/{workspace_id}/approvals
openapi: 3.1.0
info:
  title: agentsfleet Control Plane API
  description: API for managing workspaces, fleets, triggers, and runs.
  contact:
    name: agentsfleet
    url: https://agentsfleet.net
  license:
    name: MIT
    identifier: MIT
  version: 1.0.0
servers:
  - url: https://api.agentsfleet.net
    description: Production
security: []
paths:
  /v1/workspaces/{workspace_id}/approvals:
    get:
      tags:
        - Approvals
      summary: List approval gates for a workspace
      description: >-
        Returns approval gates newest-first, in every state unless `status`
        narrows them. Each row surfaces the fleet's proposed action, gathered
        evidence, blast-radius assessment, and timeout countdown. Filter by
        fleet, gate kind, or status. Cursor pagination over (created_at, id) so
        concurrent inserts don't cause silent skips. 
      operationId: list_workspace_approvals
      parameters:
        - name: workspace_id
          in: path
          description: '`UUIDv7` of the workspace.'
          required: true
          schema:
            type: string
        - name: status
          in: query
          description: >-
            Narrows to one state: "pending", "approved", "denied", "timed_out"
            or "auto_killed". Omit it for every state.
          required: false
          schema:
            type: string
        - name: fleet_id
          in: query
          required: false
          schema:
            type: string
        - name: gate_kind
          in: query
          required: false
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: string
        - name: cursor
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalsResponse'
        '400':
          description: The request could not be read
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '401':
          description: No credential, or one this route does not accept
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '403':
          description: The credential is good and lacks the capability this route requires
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '429':
          description: The instance is at its ceiling
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '500':
          description: The daemon failed to answer
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
        '503':
          description: A dependency this route needs is unreachable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemBody'
      security:
        - BearerAuth: []
components:
  schemas:
    ApprovalsResponse:
      type: object
      description: '`GET /v1/workspaces/{workspace_id}/approvals` — the queue.'
      required:
        - items
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/ApprovalSummary'
          description: The gates on this page, newest first.
        next_cursor:
          type:
            - string
            - 'null'
          description: Where the next page resumes, or `null` on the last one.
    ProblemBody:
      type: object
      description: The body every refusal carries, under `application/problem+json`.
      required:
        - docs_uri
        - title
        - detail
        - error_code
        - request_id
      properties:
        action_id:
          type:
            - string
            - 'null'
          description: 'On that 409 only: the action the gate held.'
        current_state:
          type:
            - string
            - 'null'
          description: 'On a 409 only: the state that forbade the transition.'
        detail:
          type: string
          description: One sentence on what was refused and why.
        docs_uri:
          type: string
          description: Where the error code is documented.
        error_code:
          type: string
          description: The registry code, stable across releases.
        etag:
          type:
            - string
            - 'null'
          description: >-
            On a 412 only: the resource's current entity tag, to refetch and
            retry.
        gate_id:
          type:
            - string
            - 'null'
          description: 'On an answered approval gate''s 409 only: the gate that was answered.'
        missing_secrets:
          type:
            - array
            - 'null'
          items:
            type: string
          description: 'On a 424 only: the credentials this workspace has yet to store.'
        outcome:
          type:
            - string
            - 'null'
          description: 'On that 409 only: the answer that stands.'
        request_id:
          type: string
          description: The request this refusal answers, for support.
        resolved_at:
          type:
            - integer
            - 'null'
          format: int64
          description: 'On that 409 only: when the standing answer was given.'
        resolved_by:
          type:
            - string
            - 'null'
          description: 'On that 409 only: who gave it.'
        title:
          type: string
          description: A short name for the refusal, safe to show a person.
        user_message:
          type:
            - string
            - 'null'
          description: A curated sentence for end users, where the code has one.
    ApprovalSummary:
      type: object
      description: One gate as the inbox lists it.
      required:
        - gate_id
        - fleet_id
        - fleet_name
        - workspace_id
        - action_id
        - tool_name
        - action_name
        - gate_kind
        - proposed_action
        - blast_radius
        - status
        - detail
        - created_at
        - timeout_at
        - resolved_by
        - resolved_by_name
      properties:
        action_id:
          type: string
          description: The action it gates.
        action_name:
          type: string
          description: The verb it wants.
        blast_radius:
          type: string
          description: How far the consequences reach.
        created_at:
          type: integer
          format: int64
          description: When it was raised.
        detail:
          type: string
          description: The resolver's note, empty while pending.
        evidence:
          type:
            - object
            - 'null'
          description: The evidence behind the proposal, verbatim.
        fleet_id:
          type: string
          description: The fleet that raised it.
        fleet_name:
          type: string
          description: That fleet's name, joined at read time so a rename is visible.
        gate_id:
          type: string
          description: The gate's own row id — what a decision addresses it by.
        gate_kind:
          type: string
          description: Which family of gate this is.
        proposed_action:
          type: string
          description: What the fleet proposes, in a person's words.
        resolved_by:
          type: string
          description: Who resolved it, empty while pending.
        resolved_by_name:
          type: string
          description: |-
            That person's display name, empty when this deployment holds no user
            row for the subject.

            Sent so a client never has to ask an identity provider who a subject
            is. `resolved_by` stays the identifier of record; this is the label
            beside it, and a client that gets `""` shows the subject itself.
        status:
          type: string
          description: Where the gate stands.
        timeout_at:
          type: integer
          format: int64
          description: When it stops waiting.
        tool_name:
          type: string
          description: The tool asking.
        updated_at:
          type:
            - integer
            - 'null'
          format: int64
          description: When it was resolved, or `null` while pending.
        workspace_id:
          type: string
          description: The workspace it belongs to.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Obtain a token via the CLI auth flow (POST /v1/auth/sessions) or GitHub
        OAuth

````