Accept Fail Mode Policies API

The Fail Mode Policies API from Accept — 3 operation(s) for fail mode policies.

OpenAPI Specification

accept-fail-mode-policies-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MIDAS Agents Fail Mode Policies API
  version: 1.1.0-rc.1
  description: 'Authority governance engine for autonomous decisions. Every evaluation produces exactly one outcome and one tamper-evident audit envelope.

    '
servers:
- url: http://localhost:8080
  description: Local development
security:
- BearerAuth: []
tags:
- name: Fail Mode Policies
paths:
  /v1/fail_mode_policies/{id}:
    get:
      operationId: getFailModePolicy
      summary: Get the latest version of a FailModePolicy by ID
      description: 'Returns the highest-numbered FailModePolicy version for the given id regardless of lifecycle status. Read-only; the runtime resolver remains evidence-only and rule contents do not influence outcome computation.

        '
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: FailModePolicy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailModePolicy'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient role (requires platform.viewer or above)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: FailModePolicy not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: FailModePolicy reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Fail Mode Policies
  /v1/fail_mode_policies/{id}/versions:
    get:
      operationId: listFailModePolicyVersions
      summary: List all versions of a FailModePolicy
      description: 'Returns every persisted revision of the FailModePolicy id in descending version order. 404 when the id is unknown.

        '
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Versions list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailModePolicyListResponse'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient role (requires platform.viewer or above)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: FailModePolicy not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: FailModePolicy reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Fail Mode Policies
  /v1/fail_mode_policies/{id}/versions/{version}:
    get:
      operationId: getFailModePolicyVersion
      summary: Get a specific FailModePolicy revision
      description: 'Returns the exact (id, version) revision. 404 when the pair does not exist. The runtime resolver remains evidence-only.

        '
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: integer
          minimum: 1
      responses:
        '200':
          description: FailModePolicy version
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FailModePolicy'
        '400':
          description: Version path segment is not a positive integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient role (requires platform.viewer or above)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: FailModePolicy or version not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: FailModePolicy reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Fail Mode Policies
components:
  schemas:
    FailModePolicy:
      type: object
      description: 'Governed, versioned fail-mode policy resource. Lifecycle mirrors AuthorityProfile — review-forced apply, approval transitions to active, deprecation transitions to deprecated. The persisted version is planner-authored at apply time; lifecycle.version on the apply document is informational. See docs/operations/runtime-readiness.md §11 for the operator-facing narrow-fail-mode summary.

        '
      required:
      - id
      - version
      - name
      - status
      - effective_date
      - business_owner
      - technical_owner
      - rules
      - origin
      - managed
      - created_at
      - updated_at
      properties:
        id:
          type: string
        version:
          type: integer
        name:
          type: string
        description:
          type: string
        status:
          $ref: '#/components/schemas/LifecycleStatus'
        effective_date:
          type: string
          format: date-time
        effective_until:
          type: string
          format: date-time
          nullable: true
        retired_at:
          type: string
          format: date-time
          nullable: true
        business_owner:
          type: string
        technical_owner:
          type: string
        rules:
          type: array
          items:
            $ref: '#/components/schemas/FailModePolicyRule'
        origin:
          type: string
          enum:
          - manual
          - inferred
        managed:
          type: boolean
        replaces:
          type: string
        successor_policy_id:
          type: string
        successor_version:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        created_by:
          type: string
        approved_by:
          type: string
        approved_at:
          type: string
          format: date-time
          nullable: true
    Error:
      type: object
      required:
      - error
      properties:
        error:
          type: string
    FailModePolicyListResponse:
      type: object
      description: 'Versions list wrapper for FailModePolicy GET endpoints. The array always serialises non-null (empty list when the resource is unknown is mapped to 404 by the handler).

        '
      required:
      - fail_mode_policies
      properties:
        fail_mode_policies:
          type: array
          items:
            $ref: '#/components/schemas/FailModePolicy'
    LifecycleStatus:
      type: string
      description: 'Canonical lifecycle posture for versioned governance resources (Surface, Profile, FailModePolicy, EscalationTarget). Every governed configuration entity in MIDAS follows the same draft -> review -> active -> deprecated -> retired progression. Only `active` versions participate in runtime resolution.

        '
      enum:
      - draft
      - review
      - active
      - deprecated
      - retired
    FailModePolicyRule:
      type: object
      description: 'A single rule binding a correctness class to a three-axis runtime-degradation posture (D29b): permitted_mode (Axis A), enforcement_state (Axis B), and outcome (Axis C). Validation enforces a per-posture matrix of permitted (enforcement_state, outcome) combinations; the runtime continues to record the resolved policy as evidence only and does not enforce rule contents in this tranche.

        '
      required:
      - correctness_class
      - permitted_mode
      properties:
        correctness_class:
          type: string
          enum:
          - governance_integrity
          - persistence
          - input
          - resource
          - consistency
        permitted_mode:
          type: string
          enum:
          - closed
          - soft
          - open
          - not_applicable
        enforcement_state:
          type: string
          enum:
          - evidence_only
          - dry_run
          - enforced
          default: evidence_only
          description: 'D29b declares the policy posture and intended enforcement state. The runtime currently records this declaration as evidence only and does not enforce it.

            '
        outcome:
          type: string
          enum:
          - deny
          - escalate
          - permit_with_evidence
          - manual_review
          description: 'Intended outcome for future dry-run or enforced modes. D29b stores and validates this declaration only; runtime enforcement is not enabled by this schema change.

            '
        reason:
          type: string
          description: Optional free-form note explaining the rule.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Static bearer token. Configured via MIDAS_AUTH_TOKENS or midas.yaml auth.tokens. Not required when auth.mode=open (development only).

        '