Vijil Agent Environment API

Agent, persona, policy, and harness management

OpenAPI Specification

vijil-agent-environment-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Vijil Console API (Combined) agent-configurations Agent Environment API
  description: Combined OpenAPI specification for all vijil-console microservices.
  version: 0.1.0
tags:
- name: Agent Environment
  description: Agent, persona, policy, and harness management
paths:
  /v1/agent-configurations/:
    post:
      tags:
      - Agent Environment
      summary: Create Agent Configuration
      description: 'Create a new agent configuration.


        This endpoint accepts AgentConfigRequest format from the frontend and transforms it

        to the internal AgentCreate format. The agent_url field is preserved.


        Requires agent:write permission.'
      operationId: create_agent_configuration_v1_agent_configurations__post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentConfigRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - Agent Environment
      summary: Get Agent Configurations
      description: 'List agent configurations with filtering and pagination.


        Requires agent:read permission (all team members) or

        agent:read_all permission (super admin).'
      operationId: get_agent_configurations_v1_agent_configurations__get
      parameters:
      - name: statuses
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: Filter by status(es). If not provided, defaults to non-archived statuses.
          title: Statuses
        description: Filter by status(es). If not provided, defaults to non-archived statuses.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: Maximum number of results
          default: 100
          title: Limit
        description: Maximum number of results
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of results to skip
          default: 0
          title: Offset
        description: Number of results to skip
      - name: include_scores
        in: query
        required: false
        schema:
          type: boolean
          description: When true, sideloads the latest completed evaluation scores onto each agent.
          default: false
          title: Include Scores
        description: When true, sideloads the latest completed evaluation scores onto each agent.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentConfigListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/{id}:
    get:
      tags:
      - Agent Environment
      summary: Get Agent Configuration By Id
      description: 'Get a single agent configuration by ID.


        Requires agent:read permission (all team members) or

        agent:read_all permission (super admin).'
      operationId: get_agent_configuration_by_id_v1_agent_configurations__id__get
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      - name: include_scores
        in: query
        required: false
        schema:
          type: boolean
          description: When true, sideloads the latest completed evaluation scores onto the agent.
          default: false
          title: Include Scores
        description: When true, sideloads the latest completed evaluation scores onto the agent.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Agent Environment
      summary: Update Agent Configuration
      description: "Update an existing agent configuration.\n\nSupports partial updates - you can update just the api_key field, or any other field(s).\nAll fields in the request body are optional.\n\nRequires agent:write permission + billing feature 'write_custom_agent'.\n\nExample:\n    # Update only the API key\n    PUT /agent-configurations/{id}\n    {\n      \"api_key\": \"sk-new-key-value\"\n    }\n    \n    # Update multiple fields\n    PUT /agent-configurations/{id}\n    {\n      \"agent_name\": \"New Name\",\n      \"api_key\": \"sk-new-key-value\",\n      \"mcp_config\": {\"proxy_url\": \"https://proxy.example.com\", \"access_level\": \"read\"}\n    }\n    \n    # Enable/disable dome auto-apply (when true, saving dome config auto-applies it)\n    PUT /agent-configurations/{id}\n    {\n      \"dome_manually_configured\": true\n    }"
      operationId: update_agent_configuration_v1_agent_configurations__id__put
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/{id}/archive:
    put:
      tags:
      - Agent Environment
      summary: Archive Agent Configuration
      description: 'Archive agent configuration.


        Sets the agent status to ARCHIVED.

        Requires agent:write permission (all team members) or

        agent:write_all permission (super admin).'
      operationId: archive_agent_configuration_v1_agent_configurations__id__archive_put
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/{id}/lifecycle:
    put:
      tags:
      - Agent Environment
      summary: Update Agent Lifecycle
      description: 'Update agent trust lifecycle stage.


        Requires agent:write permission (all team members) or

        agent:write_all permission (super admin).


        Setting trust_stage to ''hardened'' captures trusted_at and computes ttt_days.'
      operationId: update_agent_lifecycle_v1_agent_configurations__id__lifecycle_put
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentLifecycleUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/{agent_id}/dome-configs:
    get:
      tags:
      - Agent Environment
      summary: Get Agent Dome Config
      description: Return the dome configuration this agent is using (row-bound and/or ``dome_config_id``).
      operationId: get_agent_dome_config_v1_agent_configurations__agent_id__dome_configs_get
      parameters:
      - name: agent_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Agent Id
      - name: team_id
        in: query
        required: true
        schema:
          type: string
          format: uuid
          description: Team ID (required)
          title: Team Id
        description: Team ID (required)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentDomeConfigResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/{id}/evaluation-config:
    get:
      tags:
      - Agent Environment
      summary: Get Evaluation Config
      description: 'Get agent configuration for Diamond evaluation.


        Returns agent_url, agent_api_key, and agent_model_name needed for evaluation.

        Requires agent:read permission (all team members) or

        agent:read_all permission (super admin).'
      operationId: get_evaluation_config_v1_agent_configurations__id__evaluation_config_get
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentEvaluationConfig'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agents/{agent_id}/constraints:
    get:
      tags:
      - Agent Environment
      summary: Fetch agent trust constraints
      description: Returns the agent's trust constraints (Dome guard config, tool permissions, organization rules, enforcement mode) in the format consumed by the vijil-sdk Trust Runtime at boot.
      operationId: get_agent_constraints_v1_agents__agent_id__constraints_get
      parameters:
      - name: agent_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Agent Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentConstraints'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/import/validate:
    post:
      tags:
      - Agent Environment
      summary: Validate Agent Import
      description: 'Validate an agent import request without saving.


        Supports three input methods with deterministic access levels:

        - agent_url:   Remote black_box - Just an endpoint URL to call

        - agent_card:  Local grey_box - Upload agent configuration/card JSON

        - source_code: Local white_box - Upload agent source code files


        Returns validation status, access level, and parsed agent card for preview.'
      operationId: validate_agent_import_v1_agent_configurations_import_validate_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnifiedImportRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnifiedValidationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/agent-configurations/import:
    post:
      tags:
      - Agent Environment
      summary: Import Agent Unified
      description: 'Import an agent using the unified import endpoint.


        Supports three input methods with deterministic access levels:

        - agent_url:   Remote black_box - Just an endpoint URL to call

        - agent_card:  Local grey_box - Upload agent configuration/card JSON

        - source_code: Local white_box - Upload agent source code files


        Access level is determined by input method (not content).'
      operationId: import_agent_unified_v1_agent_configurations_import_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UnifiedImportRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnifiedImportResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/personas/{id}:
    get:
      tags:
      - Agent Environment
      summary: Get Persona
      description: 'Get a single persona by ID.


        Requires persona:read permission and team_id query parameter. The user''s JWT must be scoped to that team.'
      operationId: get_persona_v1_personas__id__get
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      - name: team_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Team scope (required); must match a team the user has access to
          title: Team Id
        description: Team scope (required); must match a team the user has access to
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Persona'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Agent Environment
      summary: Update Persona
      description: 'Update an existing persona.


        Supports partial updates - only provided fields will be updated.

        Requires persona:write permission.'
      operationId: update_persona_v1_personas__id__put
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonaUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Persona'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Agent Environment
      summary: Delete Persona
      description: 'Delete a persona.


        Requires persona:write permission.'
      operationId: delete_persona_v1_personas__id__delete
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/personas/:
    get:
      tags:
      - Agent Environment
      summary: List Personas
      description: 'List personas with filtering and pagination.


        Requires persona:read permission and team_id query parameter. The user''s JWT must be scoped to that team.'
      operationId: list_personas_v1_personas__get
      parameters:
      - name: team_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Team scope (required); must match a team the user has access to
          title: Team Id
        description: Team scope (required); must match a team the user has access to
      - name: intents
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: 'Filter by intent(s): benign, curious, adversarial, malicious'
          title: Intents
        description: 'Filter by intent(s): benign, curious, adversarial, malicious'
      - name: is_preset
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Filter by preset status
          title: Is Preset
        description: Filter by preset status
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Search in name, description, and role
          title: Search
        description: Search in name, description, and role
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Maximum number of results (default 10)
          default: 10
          title: Limit
        description: Maximum number of results (default 10)
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of results to skip for paging
          default: 0
          title: Offset
        description: Number of results to skip for paging
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonaListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Agent Environment
      summary: Create Persona
      description: 'Create a new persona.


        Requires persona:write permission for the team_id in the request body.'
      operationId: create_persona_v1_personas__post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonaCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Persona'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/personas/presets/:
    get:
      tags:
      - Agent Environment
      summary: List Presets
      description: 'List system preset personas.


        Requires persona:read permission and team_id query parameter. The user''s JWT must be scoped to that team.'
      operationId: list_presets_v1_personas_presets__get
      parameters:
      - name: team_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          description: Team scope (required); must match a team the user has access to
          title: Team Id
        description: Team scope (required); must match a team the user has access to
      - name: preset_category
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: 'Filter by preset category: professional, adversarial, support'
          title: Preset Category
        description: 'Filter by preset category: professional, adversarial, support'
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 250
          minimum: 1
          description: Maximum number of results
          default: 100
          title: Limit
        description: Maximum number of results
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of results to skip
          default: 0
          title: Offset
        description: Number of results to skip
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonaListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/personas/from-preset/{preset_id}:
    post:
      tags:
      - Agent Environment
      summary: Create From Preset
      description: 'Create a new persona from a system preset.


        Requires persona:write permission.'
      operationId: create_from_preset_v1_personas_from_preset__preset_id__post
      parameters:
      - name: preset_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Preset Id
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - $ref: '#/components/schemas/CreateFromPresetRequest'
              - type: 'null'
              title: Request
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Persona'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/demographics/:
    get:
      tags:
      - Agent Environment
      summary: List Dimensions
      description: 'List demographic dimensions.


        Requires agent:read permission (dimensions are global reference data).'
      operationId: list_dimensions_v1_demographics__get
      parameters:
      - name: protected_class_only
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Filter to only protected class dimensions
          title: Protected Class Only
        description: Filter to only protected class dimensions
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 250
          minimum: 1
          description: Maximum number of results
          default: 100
          title: Limit
        description: Maximum number of results
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of results to skip
          default: 0
          title: Offset
        description: Number of results to skip
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/src__service_agent_environment__api__dimensions__DimensionListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Agent Environment
      summary: Create Dimension
      description: 'Create a new demographic dimension.


        Requires super admin permission (dimensions are global).'
      operationId: create_dimension_v1_demographics__post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DemographicDimensionCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemographicDimension'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/demographics/{dimension_id}:
    get:
      tags:
      - Agent Environment
      summary: Get Dimension
      description: Get a dimension by ID, including its values.
      operationId: get_dimension_v1_demographics__dimension_id__get
      parameters:
      - name: dimension_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Dimension Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemographicDimension'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
      - Agent Environment
      summary: Update Dimension
      description: 'Update a demographic dimension.


        Requires super admin permission.'
      operationId: update_dimension_v1_demographics__dimension_id__put
      parameters:
      - name: dimension_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Dimension Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DemographicDimensionUpdate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemographicDimension'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - Agent Environment
      summary: Delete Dimension
      description: 'Delete a demographic dimension and all its values.


        Requires super admin permission.'
      operationId: delete_dimension_v1_demographics__dimension_id__delete
      parameters:
      - name: dimension_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Dimension Id
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/demographics/by-name/{name}:
    get:
      tags:
      - Agent Environment
      summary: Get Dimension By Name
      description: Get a dimension by name, including its values.
      operationId: get_dimension_by_name_v1_demographics_by_name__name__get
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
          title: Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemographicDimension'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/demographics/{dimension_id}/values:
    get:
      tags:
      - Agent Environment
      summary: List Values
      description: List values for a dimension.
      operationId: list_values_v1_demographics__dimension_id__values_get
      parameters:
      - name: dimension_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Dimension Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 500
          minimum: 1
          description: Maximum number of results
          default: 250
          title: Limit
        description: Maximum number of results
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          description: Number of results to skip
          default: 0
          title: Offset
        description: Number of results to skip
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/src__service_agent_environment__api__dimensions__ValueListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Agent Environment
      summary: Add Value
      description: 'Add a value to a dimension.


        Requires super admin permission.'
      operationId: add_value_v1_demographics__dimension_id__values_post
      parameters:
      - name: dimension_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Dimension Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DemographicValueCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DemographicValue'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/demographics/{dimension_id}/values/bulk:
    post:
      tags:
      - Agent Environment
      summary: Bulk Add Values
      description: 'Bulk add values to a dimension.


        Requires super admin permission.'
      operationId: bulk_add_values_v1_demographics__dimension_id__values_bulk_post
      parameters:
      - name: dimension_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Dimension Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/src__service_agent_environment__api__dimensions__BulkValuesRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
  

# --- truncated at 32 KB (165 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vijil/refs/heads/main/openapi/vijil-agent-environment-api-openapi.yml