Accept Drift API

The Drift API from Accept — 15 operation(s) for drift.

OpenAPI Specification

accept-drift-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: MIDAS Agents Drift 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: Drift
paths:
  /v1/drift/analytics:
    get:
      operationId: getDriftAnalytics
      summary: Get node-scoped Drift Analytics read model data
      parameters:
      - name: node_kind
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/DriftTargetEntityKind'
      - name: node_id
        in: query
        required: true
        schema:
          type: string
      - name: range
        in: query
        required: false
        schema:
          type: string
          default: 30d
      responses:
        '200':
          description: Node-scoped drift analytics read model
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftAnalyticsResponse'
        '400':
          description: Invalid node selector
          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'
        '501':
          description: Drift analytics reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/definitions/{id}:
    get:
      operationId: getDriftDefinition
      summary: Get the latest version of a DriftDefinition by ID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Drift definition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftDefinition'
        '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: Drift definition not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift definition reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/definitions/{id}/versions:
    get:
      operationId: listDriftDefinitionVersions
      summary: List all versions of a DriftDefinition
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Versions list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftDefinitionListResponse'
        '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: Drift definition not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift definition reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/definitions/{id}/versions/{version}:
    get:
      operationId: getDriftDefinitionVersion
      summary: Get a specific DriftDefinition revision
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: version
        in: path
        required: true
        schema:
          type: integer
          minimum: 1
      responses:
        '200':
          description: Drift definition version
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftDefinition'
        '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: Drift definition 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: Drift definition reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/definitions/{id}/series:
    get:
      operationId: listDriftSeriesByDefinition
      summary: List DriftSeries for a DriftDefinition
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Series list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftSeriesListResponse'
        '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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift series reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/definitions/{id}/observations:
    get:
      operationId: listDriftObservationsByDefinition
      summary: List DriftObservations for a DriftDefinition
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Observations list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftObservationListResponse'
        '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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift observation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/series/{id}:
    get:
      operationId: getDriftSeries
      summary: Get a DriftSeries by ID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Drift series
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftSeries'
        '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: Drift series not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift series reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/series/{id}/points:
    get:
      operationId: listDriftSeriesPoints
      summary: List DriftSeriesPoints for a series
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: from_window
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Inclusive lower bound on window_start; RFC3339.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 100
      responses:
        '200':
          description: Points list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftSeriesPointListResponse'
        '400':
          description: Invalid query parameter (limit out of range or from_window not RFC3339)
          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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift series point reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/series/{id}/observations:
    get:
      operationId: listDriftObservationsBySeries
      summary: List DriftObservations for a series
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Observations list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftObservationListResponse'
        '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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift observation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/series/{id}/annotations:
    get:
      operationId: listDriftAnnotationsBySeries
      summary: List DriftAnnotations attached to a series
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Annotations list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftAnnotationListResponse'
        '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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift annotation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/series-points/{id}:
    get:
      operationId: getDriftSeriesPoint
      summary: Get a DriftSeriesPoint by ID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Drift series point
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftSeriesPoint'
        '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: Drift series point not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift series point reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/observations/{id}:
    get:
      operationId: getDriftObservation
      summary: Get a DriftObservation by ID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Drift observation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftObservation'
        '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: Drift observation not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift observation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/observations/{id}/annotations:
    get:
      operationId: listDriftAnnotationsByObservation
      summary: List DriftAnnotations attached to an observation
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Annotations list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftAnnotationListResponse'
        '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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift annotation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/annotations/{id}:
    get:
      operationId: getDriftAnnotation
      summary: Get a DriftAnnotation by ID
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Drift annotation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftAnnotation'
        '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: Drift annotation not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift annotation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
  /v1/drift/entities/{kind}/{entity_id}/observations:
    get:
      operationId: listDriftObservationsByEntity
      summary: List DriftObservations for a governed entity target
      parameters:
      - name: kind
        in: path
        required: true
        schema:
          $ref: '#/components/schemas/DriftTargetEntityKind'
      - name: entity_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Observations list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftObservationListResponse'
        '400':
          description: Invalid target entity kind
          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'
        '500':
          description: Repository error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Drift observation reader not configured
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Drift
components:
  schemas:
    DriftThresholdDirection:
      type: string
      enum:
      - ascending
      - descending
    DriftAnalyticsObservedPoint:
      type: object
      required:
      - t
      - value
      properties:
        t:
          type: string
          format: date-time
        value:
          type: number
          format: double
        status:
          type: string
        magnitude:
          type: number
          format: double
    DriftPointComputationMode:
      type: string
      description: 'Computation provenance for a series point. Backfill state lives on this enum; it is not encoded on detector_status.

        '
      enum:
      - realtime
      - backfilled
      - corrected
      - imported
    DriftAnalyticsResponse:
      type: object
      required:
      - node
      - range
      - chart
      - provenance
      - sourceClassification
      - dataAvailable
      properties:
        node:
          type: object
          required:
          - kind
          - id
          properties:
            kind:
              $ref: '#/components/schemas/DriftTargetEntityKind'
            id:
              type: string
        range:
          type: object
          required:
          - key
          - label
          properties:
            key:
              type: string
            label:
              type: string
            from:
              type: string
              format: date-time
            to:
              type: string
              format: date-time
        chart:
          type: object
          required:
          - observed
          - expected
          - watch
          - breach
          - yDomain
          properties:
            metricId:
              type: string
            driftType:
              $ref: '#/components/schemas/DriftType'
            seriesId:
              type: string
            observed:
              type: array
              items:
                $ref: '#/components/schemas/DriftAnalyticsObservedPoint'
            expected:
              type: array
              items:
                $ref: '#/components/schemas/DriftAnalyticsPoint'
            watch:
              type: array
              items:
                $ref: '#/components/schemas/DriftAnalyticsPoint'
            breach:
              type: array
              items:
                $ref: '#/components/schemas/DriftAnalyticsPoint'
            currentValue:
              type: number
              format: double
            currentStatus:
              type: string
            yDomain:
              type: object
              required:
              - min
              - max
              properties:
                min:
                  type: number
                  format: double
                max:
                  type: number
                  format: double
        provenance:
          type: object
          required:
          - envelopeIds
          - pointIds
          - observationIds
          - annotationIds
          - profileRefs
          - policyRefs
          - verificationStatus
          properties:
            envelopeIds:
              type: array
              items:
                type: string
            pointIds:
              type: array
              items:
                type: string
            observationIds:
              type: array
              items:
                type: string
            annotationIds:
              type: array
              items:
                type: string
            profileRefs:
              type: array
              items:
                type: string
            policyRefs:
              type: array
              items:
                type: string
            verificationStatus:
              type: string
              enum:
              - not_requested
              - not_verified
        sourceClassification:
          type: object
          required:
          - selectedNode
          - observedSeries
          - expectedBaseline
          - thresholds
          - status
          - provenance
          - compositeScore
          - contributionValues
          - contributionWeights
          - graphOverlay
          properties:
            selectedNode:
              type: string
              enum:
              - backend
            observedSeries:
              type: string
              enum:
              - backend
              - unavailable
            expectedBaseline:
              type: string
              enum:
              - backend
              - unavailable
            thresholds:
              type: string
              enum:
              - backend
              - unavailable
            status:
              type: string
              enum:
              - backend
              - unavailable
            provenance:
              type: string
              enum:
              - backend_refs
              - not_available
            compositeScore:
              type: string
              enum:
              - not_available
            contributionValues:
              type: string
              enum:
              - not_available
            contributionWeights:
              type: string
              enum:
              - not_available
            graphOverlay:
              type: string
              enum:
              - not_implemented
        projectionAsOf:
          type: string
          format: date-time
        dataAvailable:
          type: boolean
    DriftDefinitionListResponse:
      type: object
      required:
      - drift_definitions
      properties:
        drift_definitions:
          type: array
          items:
            $ref: '#/components/schemas/DriftDefinition'
    DriftBaselineStrategy:
      type: string
      description: 'V1 baseline strategies. champion_challenger and seasonality_aware are deferred to V2 and MUST NOT appear here.

        '
      enum:
      - rolling
      - fixed_governed
      - previous_equivalent
      - since_last_governed_change
      - manually_pinned
    DriftOrigin:
      type: string
      enum:
      - manual
      - inferred
      - auto_instrumented
    DriftObservationListResponse:
      type: object
      required:
      - drift_observations
      properties:
        drift_observations:
          type: array
          items:
            $ref: '#/components/schemas/DriftObservation'
    DriftAnnotationStatus:
      type: string
      enum:
      - active
      - superseded
    DriftAnalyticsPoint:
      type: object
      required:
      - t
      - value
      properties:
        t:
          type: string
          format: date-time
        value:
          type: number
          format: double
    DriftSeries:
      type: object
      description: One time-ordered stream for a (definition revision, metric, cadence) tuple.
      required:
      - id
      - definition_id
      - definition_version
      - metric_id
      - cadence
      - status
      - continuity_group_id
      - created_at
      - updated_at
      properties:
        id:
          type: string
        definition_id:
          type: string
        definition_version:
          type: integer
          minimum: 1
        metric_id:
          type: string
        cadence:
          $ref: '#/components/schemas/DriftCadence'
        status:
          $ref: '#/components/schemas/DriftStatusBand'
        continuity_group_id:
          type: string
        previous_series_id:
          type: string
        superseded_by_series_id:
          type: string
        cutover_at:
          type: string
          format: date-time
          nullable: true
        sealed_at:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    DriftCadence:
      type: string
      enum:
      - minute
      - hour
      - day
      - week
    DriftAnnotationTargetRef:
      type: object
      required:
      - kind
      - id
      properties:
        kind:
          $ref: '#/components/schemas/DriftAnnotationTargetKind'
        id:
          type: string
    DriftAnnotation:
      type: object
      description: Operator commentary against a series or observation.
      required:
      - id
      - target
      - annotation_type
      - body
      - reference_envelope_ids
      - status
      - author_id
      - created_at
      - updated_at
      properties:
        id:
          type: string
        target:
          $ref: '#/components/schemas/DriftAnnotationTargetRef'
        annotation_type:
          $ref: '#/components/schemas/DriftAnnotationType'
        body:
          type: string
        suppression_until:
          type: string
          format: date-time
          nullable: true
        reference_envelope_ids:
          type: array
          items:
            type: string
        status:
          $ref: '#/components/schemas/DriftAnnotationStatus'
        superseded_by_id:
          type: string
        author_id:
          type: string
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    DriftAnnotationListResponse:
      type: object
      required:
      - drift_annotations
      properties:
        drift_annotations:
          type: array
          items:
            $ref: '#/components/schemas/DriftAnnotation'
    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
    DriftAnnotationType:
      type: string
      enum:
      - known_business_change
      - suppression
      - remediation_note
      - acknowledgement
    DriftMetricDefinition:
      type: object
      description: Embedded metric inside a DriftDefinition revision.
      required:
      - metric_id
      - drift_type
      - baseline_strategy
      - window_seconds
      - cadence
      - threshold_direction
      - warning_threshold
      - breached_threshold
      properties:
        metric_id:
          type: string
        drift_type:
          $ref: '#/components/schemas/DriftType'
        baseline_strategy:
          $ref: '#/components/sch

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/accept/refs/heads/main/openapi/accept-drift-api-openapi.yml