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

# Decide Action

> Approve or reject one version-bound, one-use action. Approval rechecks current RBAC, tenant scope, billing, target state, and request schema before executing and recording verification evidence.



## OpenAPI

````yaml /openapi.json post /v1/orgs/{orgId}/projects/{projectId}/maintenance/actions/{actionId}/decision
openapi: 3.1.0
info:
  title: Korve API
  version: 0.1.0
  description: >-
    Typed control plane for deploying applications and explicitly provisioning
    their managed infrastructure.
servers:
  - url: https://api.korve.dev
security: []
paths:
  /v1/orgs/{orgId}/projects/{projectId}/maintenance/actions/{actionId}/decision:
    post:
      tags:
        - projectMaintenance
      summary: Decide Action
      description: >-
        Approve or reject one version-bound, one-use action. Approval rechecks
        current RBAC, tenant scope, billing, target state, and request schema
        before executing and recording verification evidence.
      operationId: projectMaintenance.decideAction
      parameters:
        - name: orgId
          in: path
          required: true
          schema:
            type: string
          description: The organization's id (UUID) or slug — either form is accepted.
        - name: projectId
          in: path
          required: true
          schema:
            type: string
          description: The project's id (UUID) or slug — either form is accepted.
        - name: actionId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        x-korve-max-bytes: 1048576
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                decision:
                  type: string
                  enum:
                    - approve
                    - reject
                actionVersion:
                  type: integer
                  minimum: 1
                reason:
                  type: string
                  minLength: 1
                  maxLength: 1000
              required:
                - decision
                - actionVersion
                - reason
      responses:
        '200':
          description: Decided maintenance action.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  id:
                    type: string
                    format: uuid
                  runId:
                    type: string
                    format: uuid
                  findingId:
                    type:
                      - string
                      - 'null'
                    format: uuid
                  operationId:
                    type: string
                  risk:
                    type: string
                    enum:
                      - read
                      - write
                      - dangerous
                      - destructive
                  status:
                    type: string
                    enum:
                      - proposed
                      - approval_required
                      - approved
                      - rejected
                      - running
                      - succeeded
                      - failed
                      - rolled_back
                  version:
                    type: integer
                    minimum: 1
                  input:
                    type: object
                    additionalProperties: true
                  preview:
                    type: object
                    additionalProperties: true
                  result: {}
                  error:
                    type:
                      - string
                      - 'null'
                  decidedBy:
                    type:
                      - string
                      - 'null'
                    minLength: 1
                    maxLength: 160
                  decisionReason:
                    type:
                      - string
                      - 'null'
                  decidedAt:
                    type:
                      - string
                      - 'null'
                    format: date-time
                  executedAt:
                    type:
                      - string
                      - 'null'
                    format: date-time
                  createdAt:
                    type: string
                    format: date-time
                required:
                  - id
                  - runId
                  - findingId
                  - operationId
                  - risk
                  - status
                  - version
                  - input
                  - preview
                  - result
                  - error
                  - decidedBy
                  - decisionReason
                  - decidedAt
                  - executedAt
                  - createdAt
        '403':
          description: Current actor cannot execute the target operation.
        '404':
          description: No such action in this project.
        '409':
          description: The action was already decided, expired, or changed version.
      security:
        - session: []
components:
  securitySchemes:
    session:
      type: apiKey
      in: cookie
      name: korve.session_token

````