Arthur AI Policies V1 API

The Policies V1 API from Arthur AI — 22 operation(s) for policies v1.

Operations 34

GET /api/v1/models/{model_id}/assignments List Model Policy Assignments #
POST /api/v1/models/{model_id}/check_compliance Check Model Compliance #
GET /api/v1/models/{model_id}/attestations List Model Attestations #
GET /api/v1/workspaces/{workspace_id}/policy_assignments List Workspace Policy Assignments #
GET /api/v1/workspaces/{workspace_id}/compliance List Workspace Compliance #
POST /api/v1/workspaces/{workspace_id}/check_compliance Check Workspace Policies Compliance #
GET /api/v1/organization/policy_assignments List Organization Policy Assignments #
GET /api/v1/organization/compliance List Organization Compliance #
POST /api/v1/organization/policies Create Policy #
GET /api/v1/organization/policies List Policies #
GET /api/v1/policies/{policy_id} Get Policy #
PATCH /api/v1/policies/{policy_id} Update Policy #
DELETE /api/v1/policies/{policy_id} Delete Policy #
POST /api/v1/policies/{policy_id}/alert_rules Create Policy Alert Rule #
GET /api/v1/policies/{policy_id}/alert_rules List Policy Alert Rules #
POST /api/v1/policies/{policy_id}/attestation_rules Create Policy Attestation Rule #
GET /api/v1/policies/{policy_id}/attestation_rules List Policy Attestation Rules #
POST /api/v1/policies/{policy_id}/assignments Create Policy Assignments #
GET /api/v1/policies/{policy_id}/assignments List Policy Assignments #
POST /api/v1/policies/{policy_id}/check_compliance Check Policy Compliance #
GET /api/v1/policies/{policy_id}/compliance_history List Policy Compliance History #
GET /api/v1/policy_alert_rules/{rule_id} Get Policy Alert Rule #
PATCH /api/v1/policy_alert_rules/{rule_id} Update Policy Alert Rule #
DELETE /api/v1/policy_alert_rules/{rule_id} Delete Policy Alert Rule #
GET /api/v1/policy_attestation_rules/{rule_id} Get Policy Attestation Rule #
PATCH /api/v1/policy_attestation_rules/{rule_id} Update Policy Attestation Rule #
DELETE /api/v1/policy_attestation_rules/{rule_id} Delete Policy Attestation Rule #
GET /api/v1/policy_assignments/{assignment_id} Get Policy Assignment #
DELETE /api/v1/policy_assignments/{assignment_id} Delete Policy Assignment #
POST /api/v1/policy_assignments/{assignment_id}/check_compliance Check Assignment Compliance #
POST /api/v1/policy_assignments/{assignment_id}/attestations Create Attestation #
GET /api/v1/policy_assignments/{assignment_id}/attestations List Assignment Attestations #
PUT /api/v1/policy_assignments/{assignment_id}/compliance_status Set Compliance Status #
PATCH /api/v1/policy_assignments/{assignment_id}/job_chain Update Assignment Job Chain #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/arthur-ai-policies-v1-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

arthur-ai-policies-v1-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Arthur Scope Agents V1 Policies V1 API
  version: 0.1.0
servers:
- url: https://platform.arthur.ai/api
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Policies V1
paths:
  /api/v1/models/{model_id}/assignments:
    get:
      tags:
      - Policies V1
      summary: List Model Policy Assignments
      description: Lists all policy assignments for an application including policy summary and compliance status. Requires model_list_policy_assignments permission.
      operationId: list_model_policy_assignments
      security:
      - OAuth2AuthorizationCode:
        - model_list_policy_assignments
      parameters:
      - name: model_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Model Id
      - name: assignment_id
        in: query
        required: false
        schema:
          type: string
          format: uuid
          description: Optional assignment ID to filter by.
          title: Assignment Id
        description: Optional assignment ID to filter by.
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by policy name (case-insensitive partial match).
          title: Name
        description: Filter by policy name (case-insensitive partial match).
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceList_PolicyAssignment_'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/models/{model_id}/check_compliance:
    post:
      tags:
      - Policies V1
      summary: Check Model Compliance
      description: Enqueues a Metrics → Alerts → Compliance chain for all assignments on this model. The window is taken from the request body's start_timestamp / end_timestamp. Requires model_check_compliance permission.
      operationId: check_model_compliance
      security:
      - OAuth2AuthorizationCode:
        - model_check_compliance
      parameters:
      - name: model_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Model Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetricsCalculationJobSpec'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobsBatch'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/models/{model_id}/attestations:
    get:
      tags:
      - Policies V1
      summary: List Model Attestations
      description: Lists all attestations across all policy assignments for an application. Requires model_list_attestations permission.
      operationId: list_model_attestations
      security:
      - OAuth2AuthorizationCode:
        - model_list_attestations
      parameters:
      - name: model_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Model Id
      - name: latest
        in: query
        required: false
        schema:
          type: boolean
          description: If true, only return the most recent attestation for each rule.
          default: false
          title: Latest
        description: If true, only return the most recent attestation for each rule.
      - name: valid
        in: query
        required: false
        schema:
          type: boolean
          description: If true, only return attestations that have not expired.
          default: false
          title: Valid
        description: If true, only return attestations that have not expired.
      - name: policy_assignment_id
        in: query
        required: false
        schema:
          type: string
          format: uuid
          description: Optional policy assignment ID to filter attestations by.
          title: Policy Assignment Id
        description: Optional policy assignment ID to filter attestations by.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceList_AttestationRecord_'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/workspaces/{workspace_id}/policy_assignments:
    get:
      tags:
      - Policies V1
      summary: List Workspace Policy Assignments
      description: Lists all policy assignments within a workspace, filtered to applications the caller can access. Requires workspace_list_policy_assignments permission.
      operationId: list_workspace_policy_assignments
      security:
      - OAuth2AuthorizationCode:
        - workspace_list_policy_assignments
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter by policy ID.
          title: Policy Id
        description: Filter by policy ID.
      - name: compliance_status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceStatus'
          - type: 'null'
          description: Filter by compliance status.
          title: Compliance Status
        description: Filter by compliance status.
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by policy name (case-insensitive partial match).
          title: Name
        description: Filter by policy name (case-insensitive partial match).
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceList_PolicyAssignment_'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/workspaces/{workspace_id}/compliance:
    get:
      tags:
      - Policies V1
      summary: List Workspace Compliance
      description: Returns a flat compliance table with per-rule, per-model status across all policies in a workspace. Requires workspace_list_policy_compliance permission.
      operationId: list_workspace_compliance
      security:
      - OAuth2AuthorizationCode:
        - workspace_list_policy_compliance
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      - name: compliance_status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceRuleStatusFilter'
          - type: 'null'
          description: 'Filter by rule compliance status: ''COMPLIANT'' or ''NON_COMPLIANT''.'
          title: Compliance Status
        description: 'Filter by rule compliance status: ''COMPLIANT'' or ''NON_COMPLIANT''.'
      - name: model_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to a specific model.
          title: Model Id
        description: Filter to a specific model.
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to a specific policy.
          title: Policy Id
        description: Filter to a specific policy.
      - name: rule_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceRuleType'
          - type: 'null'
          description: 'Filter by rule type: ''alert_rule'' or ''attestation_rule''.'
          title: Rule Type
        description: 'Filter by rule type: ''alert_rule'' or ''attestation_rule''.'
      - name: rule_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to rows for a specific rule.
          title: Rule Id
        description: Filter to rows for a specific rule.
      - name: frequency
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          description: Filter attestation rules by validity period in days.
          title: Frequency
        description: Filter attestation rules by validity period in days.
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          description: Search across rule, model, and policy names (case-insensitive).
          title: Search
        description: Search across rule, model, and policy names (case-insensitive).
      - name: sort
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: 'Sort field: rule_name, rule_type, compliance_status, updated_at, created_at.'
          title: Sort
        description: 'Sort field: rule_name, rule_type, compliance_status, updated_at, created_at.'
      - name: order
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/SortOrder'
          - type: 'null'
          description: 'Sort order: asc or desc.'
          title: Order
        description: 'Sort order: asc or desc.'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComplianceResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/workspaces/{workspace_id}/check_compliance:
    post:
      tags:
      - Policies V1
      summary: Check Workspace Policies Compliance
      description: Enqueues a Metrics → Alerts → Compliance chain for every model with policy assignments in the workspace. Returns one job per model. Requires workspace_check_all_policies_compliance permission.
      operationId: check_workspace_policies_compliance
      security:
      - OAuth2AuthorizationCode:
        - workspace_check_all_policies_compliance
      parameters:
      - name: workspace_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Workspace Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetricsCalculationJobSpec'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobsBatch'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/organization/policy_assignments:
    get:
      tags:
      - Policies V1
      summary: List Organization Policy Assignments
      description: Lists all policy assignments across every workspace in the organization, filtered to applications the caller can access. Requires organization_list_policy_assignments permission.
      operationId: list_organization_policy_assignments
      security:
      - OAuth2AuthorizationCode:
        - organization_list_policy_assignments
      parameters:
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter by policy ID.
          title: Policy Id
        description: Filter by policy ID.
      - name: compliance_status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceStatus'
          - type: 'null'
          description: Filter by compliance status.
          title: Compliance Status
        description: Filter by compliance status.
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter by policy name (case-insensitive partial match).
          title: Name
        description: Filter by policy name (case-insensitive partial match).
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceList_PolicyAssignment_'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/organization/compliance:
    get:
      tags:
      - Policies V1
      summary: List Organization Compliance
      description: Returns a flat compliance table with per-rule, per-model status across all policies in every workspace in the organization. Requires organization_list_policy_compliance permission.
      operationId: list_organization_compliance
      security:
      - OAuth2AuthorizationCode:
        - organization_list_policy_compliance
      parameters:
      - name: compliance_status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceRuleStatusFilter'
          - type: 'null'
          description: 'Filter by rule compliance status: ''COMPLIANT'' or ''NON_COMPLIANT''.'
          title: Compliance Status
        description: 'Filter by rule compliance status: ''COMPLIANT'' or ''NON_COMPLIANT''.'
      - name: model_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to a specific model.
          title: Model Id
        description: Filter to a specific model.
      - name: policy_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to a specific policy.
          title: Policy Id
        description: Filter to a specific policy.
      - name: rule_type
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceRuleType'
          - type: 'null'
          description: 'Filter by rule type: ''alert_rule'' or ''attestation_rule''.'
          title: Rule Type
        description: 'Filter by rule type: ''alert_rule'' or ''attestation_rule''.'
      - name: rule_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter to rows for a specific rule.
          title: Rule Id
        description: Filter to rows for a specific rule.
      - name: frequency
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          description: Filter attestation rules by validity period in days.
          title: Frequency
        description: Filter attestation rules by validity period in days.
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 200
          - type: 'null'
          description: Search across rule, model, and policy names (case-insensitive).
          title: Search
        description: Search across rule, model, and policy names (case-insensitive).
      - name: sort
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: 'Sort field: rule_name, rule_type, compliance_status, updated_at, created_at.'
          title: Sort
        description: 'Sort field: rule_name, rule_type, compliance_status, updated_at, created_at.'
      - name: order
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/SortOrder'
          - type: 'null'
          description: 'Sort order: asc or desc.'
          title: Order
        description: 'Sort order: asc or desc.'
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComplianceResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/organization/policies:
    post:
      tags:
      - Policies V1
      summary: Create Policy
      description: Creates a new policy with inline rules for the organization. At least one alert or attestation rule is required. Requires organization_create_policy permission.
      operationId: create_policy
      security:
      - OAuth2AuthorizationCode:
        - organization_create_policy
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostPolicy'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicySummary'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Policies V1
      summary: List Policies
      description: Lists all policies for the organization. Requires organization_list_policies permission.
      operationId: list_policies
      security:
      - OAuth2AuthorizationCode:
        - organization_list_policies
      parameters:
      - name: sort
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/PolicySort'
          description: Override the field used for sorting the returned list.
          default: created_at
        description: Override the field used for sorting the returned list.
      - name: order
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/SortOrder'
          description: Override the sort order used.
          default: desc
        description: Override the sort order used.
      - name: name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Filter policies by name (case-insensitive partial match).
          title: Name
        description: Filter policies by name (case-insensitive partial match).
      - name: owner_group_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter policies by owner group ID.
          title: Owner Group Id
        description: Filter policies by owner group ID.
      - name: compliance_status
        in: query
        required: false
        schema:
          anyOf:
          - $ref: '#/components/schemas/ComplianceStatus'
          - type: 'null'
          description: Filter by compliance status. Returns policies with at least one assignment matching this status.
          title: Compliance Status
        description: Filter by compliance status. Returns policies with at least one assignment matching this status.
      - name: model_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Filter by assigned application/model ID.
          title: Model Id
        description: Filter by assigned application/model ID.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: The page to return starting from 1 up to total_pages.
          default: 1
          title: Page
        description: The page to return starting from 1 up to total_pages.
      - name: page_size
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: The number of records per page. The max is 1000.
          default: 20
          title: Page Size
        description: The number of records per page. The max is 1000.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceList_Policy_'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/policies/{policy_id}:
    get:
      tags:
      - Policies V1
      summary: Get Policy
      description: Returns a single policy by ID including nested alert rules and attestation rules. Requires policy_read permission.
      operationId: get_policy
      security:
      - OAuth2AuthorizationCode:
        - policy_read
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Policy Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - Policies V1
      summary: Update Policy
      description: Updates a policy's metadata or enforcement delay. Requires policy_update permission.
      operationId: update_policy
      security:
      - OAuth2AuthorizationCode:
        - policy_update
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Policy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchPolicy'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Policies V1
      summary: Delete Policy
      description: Deletes a policy and cascades to all assignments, materialized rules, and attestation records. Requires policy_delete permission.
      operationId: delete_policy
      security:
      - OAuth2AuthorizationCode:
        - policy_delete
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Policy Id
      responses:
        '204':
          description: Successful Response
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/policies/{policy_id}/alert_rules:
    post:
      tags:
      - Policies V1
      summary: Create Policy Alert Rule
      description: Creates a new alert rule for a policy. Propagates to all assigned applications. Requires policy_create_alert_rule permission.
      operationId: create_policy_alert_rule
      security:
      - OAuth2AuthorizationCode:
        - policy_create_alert_rule
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Policy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostPolicyAlertRule'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyAlertRule'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
   

# --- truncated at 32 KB (138 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/arthur-ai/refs/heads/main/openapi/arthur-ai-policies-v1-api-openapi.yml