Virtru policy.obligations.Service API

/ / Obligation Service /

Operations 15

POST /policy.obligations.Service/ListObligations ListObligations #
POST /policy.obligations.Service/GetObligation GetObligation #
POST /policy.obligations.Service/GetObligationsByFQNs GetObligationsByFQNs #
POST /policy.obligations.Service/CreateObligation CreateObligation #
POST /policy.obligations.Service/UpdateObligation UpdateObligation #
POST /policy.obligations.Service/DeleteObligation DeleteObligation #
POST /policy.obligations.Service/GetObligationValue GetObligationValue #
POST /policy.obligations.Service/GetObligationValuesByFQNs GetObligationValuesByFQNs #
POST /policy.obligations.Service/CreateObligationValue CreateObligationValue #
POST /policy.obligations.Service/UpdateObligationValue UpdateObligationValue #
POST /policy.obligations.Service/DeleteObligationValue DeleteObligationValue #
POST /policy.obligations.Service/GetObligationTrigger GetObligationTrigger #
POST /policy.obligations.Service/AddObligationTrigger AddObligationTrigger #
POST /policy.obligations.Service/RemoveObligationTrigger RemoveObligationTrigger #
POST /policy.obligations.Service/ListObligationTriggers ListObligationTriggers #

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/virtru-policy-obligations-service-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

virtru-policy-obligations-service-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: authorization authorization.AuthorizationService Policy.obligations.Service API
  description: '/

    / Obligation Service

    /'
servers:
- url: https://api.virtru.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
security: []
tags:
- name: policy.obligations.Service
  description: '/

    / Obligation Service

    /'
paths:
  /policy.obligations.Service/ListObligations:
    post:
      tags:
      - policy.obligations.Service
      summary: ListObligations
      operationId: policy.obligations.Service.ListObligations
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.ListObligationsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.ListObligationsResponse'
  /policy.obligations.Service/GetObligation:
    post:
      tags:
      - policy.obligations.Service
      summary: GetObligation
      operationId: policy.obligations.Service.GetObligation
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.GetObligationRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.GetObligationResponse'
  /policy.obligations.Service/GetObligationsByFQNs:
    post:
      tags:
      - policy.obligations.Service
      summary: GetObligationsByFQNs
      operationId: policy.obligations.Service.GetObligationsByFQNs
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.GetObligationsByFQNsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.GetObligationsByFQNsResponse'
  /policy.obligations.Service/CreateObligation:
    post:
      tags:
      - policy.obligations.Service
      summary: CreateObligation
      operationId: policy.obligations.Service.CreateObligation
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.CreateObligationRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.CreateObligationResponse'
  /policy.obligations.Service/UpdateObligation:
    post:
      tags:
      - policy.obligations.Service
      summary: UpdateObligation
      operationId: policy.obligations.Service.UpdateObligation
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.UpdateObligationRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.UpdateObligationResponse'
  /policy.obligations.Service/DeleteObligation:
    post:
      tags:
      - policy.obligations.Service
      summary: DeleteObligation
      operationId: policy.obligations.Service.DeleteObligation
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.DeleteObligationRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.DeleteObligationResponse'
  /policy.obligations.Service/GetObligationValue:
    post:
      tags:
      - policy.obligations.Service
      summary: GetObligationValue
      operationId: policy.obligations.Service.GetObligationValue
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.GetObligationValueRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.GetObligationValueResponse'
  /policy.obligations.Service/GetObligationValuesByFQNs:
    post:
      tags:
      - policy.obligations.Service
      summary: GetObligationValuesByFQNs
      operationId: policy.obligations.Service.GetObligationValuesByFQNs
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.GetObligationValuesByFQNsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.GetObligationValuesByFQNsResponse'
  /policy.obligations.Service/CreateObligationValue:
    post:
      tags:
      - policy.obligations.Service
      summary: CreateObligationValue
      operationId: policy.obligations.Service.CreateObligationValue
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.CreateObligationValueRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.CreateObligationValueResponse'
  /policy.obligations.Service/UpdateObligationValue:
    post:
      tags:
      - policy.obligations.Service
      summary: UpdateObligationValue
      operationId: policy.obligations.Service.UpdateObligationValue
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.UpdateObligationValueRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.UpdateObligationValueResponse'
  /policy.obligations.Service/DeleteObligationValue:
    post:
      tags:
      - policy.obligations.Service
      summary: DeleteObligationValue
      operationId: policy.obligations.Service.DeleteObligationValue
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.DeleteObligationValueRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.DeleteObligationValueResponse'
  /policy.obligations.Service/GetObligationTrigger:
    post:
      tags:
      - policy.obligations.Service
      summary: GetObligationTrigger
      operationId: policy.obligations.Service.GetObligationTrigger
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.GetObligationTriggerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.GetObligationTriggerResponse'
  /policy.obligations.Service/AddObligationTrigger:
    post:
      tags:
      - policy.obligations.Service
      summary: AddObligationTrigger
      operationId: policy.obligations.Service.AddObligationTrigger
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.AddObligationTriggerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.AddObligationTriggerResponse'
  /policy.obligations.Service/RemoveObligationTrigger:
    post:
      tags:
      - policy.obligations.Service
      summary: RemoveObligationTrigger
      operationId: policy.obligations.Service.RemoveObligationTrigger
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.RemoveObligationTriggerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.RemoveObligationTriggerResponse'
  /policy.obligations.Service/ListObligationTriggers:
    post:
      tags:
      - policy.obligations.Service
      summary: ListObligationTriggers
      operationId: policy.obligations.Service.ListObligationTriggers
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.obligations.ListObligationTriggersRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.obligations.ListObligationTriggersResponse'
components:
  schemas:
    policy.RequestContext:
      type: object
      properties:
        pep:
          title: pep
          $ref: '#/components/schemas/policy.PolicyEnforcementPoint'
      title: RequestContext
      required:
      - pep
      additionalProperties: false
      description: Holds the context needed for obligation fulfillment
    policy.obligations.ListObligationTriggersResponse:
      type: object
      properties:
        triggers:
          type: array
          items:
            $ref: '#/components/schemas/policy.ObligationTrigger'
          title: triggers
        pagination:
          title: pagination
          $ref: '#/components/schemas/policy.PageResponse'
      title: ListObligationTriggersResponse
      additionalProperties: false
    policy.ObligationValue:
      type: object
      properties:
        id:
          type: string
          title: id
        obligation:
          title: obligation
          $ref: '#/components/schemas/policy.Obligation'
        value:
          type: string
          title: value
        triggers:
          type: array
          items:
            $ref: '#/components/schemas/policy.ObligationTrigger'
          title: triggers
        fqn:
          type: string
          title: fqn
        metadata:
          title: metadata
          $ref: '#/components/schemas/common.Metadata'
      title: ObligationValue
      additionalProperties: false
    common.IdFqnIdentifier:
      type: object
      properties:
        id:
          type: string
          title: id
          format: uuid
        fqn:
          type: string
          title: fqn
          minLength: 1
          format: uri
      title: IdFqnIdentifier
      additionalProperties: false
    google.protobuf.BoolValue:
      type: boolean
      description: "Wrapper message for `bool`.\n\n The JSON representation for `BoolValue` is JSON `true` and `false`.\n\n Not recommended for use in new APIs, but still useful for legacy APIs and\n has no plan to be removed."
    policy.SubjectMappingOperatorEnum:
      type: string
      title: SubjectMappingOperatorEnum
      enum:
      - SUBJECT_MAPPING_OPERATOR_ENUM_UNSPECIFIED
      - SUBJECT_MAPPING_OPERATOR_ENUM_IN
      - SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN
      - SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS
    policy.Obligation:
      type: object
      properties:
        id:
          type: string
          title: id
        namespace:
          title: namespace
          $ref: '#/components/schemas/policy.Namespace'
        name:
          type: string
          title: name
        values:
          type: array
          items:
            $ref: '#/components/schemas/policy.ObligationValue'
          title: values
        fqn:
          type: string
          title: fqn
        metadata:
          title: metadata
          $ref: '#/components/schemas/common.Metadata'
      title: Obligation
      additionalProperties: false
    policy.Namespace:
      type: object
      properties:
        id:
          type: string
          title: id
          description: generated uuid in database
        name:
          type: string
          title: name
          description: "used to partition Attribute Definitions, support by namespace AuthN and\n enable federation"
        fqn:
          type: string
          title: fqn
        active:
          title: active
          description: active by default until explicitly deactivated
          $ref: '#/components/schemas/google.protobuf.BoolValue'
        metadata:
          title: metadata
          $ref: '#/components/schemas/common.Metadata'
        grants:
          type: array
          items:
            $ref: '#/components/schemas/policy.KeyAccessServer'
          title: grants
          description: Deprecated KAS grants for the namespace. Use kas_keys instead.
        kasKeys:
          type: array
          items:
            $ref: '#/components/schemas/policy.SimpleKasKey'
          title: kas_keys
          description: Keys for the namespace
      title: Namespace
      additionalProperties: false
    google.protobuf.Timestamp:
      type: string
      examples:
      - 1s
      - 1.000340012s
      format: date-time
      description: "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(&tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(&ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n     Timestamp timestamp;\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n     long millis = System.currentTimeMillis();\n\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n     Instant now = Instant.now();\n\n     Timestamp timestamp =\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n             .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n     timestamp = Timestamp()\n     timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format."
    policy.obligations.GetObligationRequest:
      type: object
      properties:
        id:
          type: string
          title: id
          format: uuid
        fqn:
          type: string
          title: fqn
          minLength: 1
          format: uri
      title: GetObligationRequest
      additionalProperties: false
    policy.obligations.DeleteObligationValueResponse:
      type: object
      properties:
        value:
          title: value
          $ref: '#/components/schemas/policy.ObligationValue'
      title: DeleteObligationValueResponse
      additionalProperties: false
    policy.PageRequest:
      type: object
      properties:
        limit:
          type: integer
          title: limit
          format: int32
          description: "Optional\n Set to configured default limit if not provided\n Maximum limit set in platform config and enforced by services"
        offset:
          type: integer
          title: offset
          format: int32
          description: "Optional\n Defaulted if not provided"
      title: PageRequest
      additionalProperties: false
    common.MetadataUpdateEnum:
      type: string
      title: MetadataUpdateEnum
      enum:
      - METADATA_UPDATE_ENUM_UNSPECIFIED
      - METADATA_UPDATE_ENUM_EXTEND
      - METADATA_UPDATE_ENUM_REPLACE
    policy.PublicKey:
      type: object
      oneOf:
      - properties:
          cached:
            title: cached
            description: public key with additional information. Current preferred version
            $ref: '#/components/schemas/policy.KasPublicKeySet'
        title: cached
        required:
        - cached
      - properties:
          remote:
            type: string
            title: remote
            description: 'kas public key url - optional since can also be retrieved via public key

              URI must be a valid URL (e.g., ''https://demo.com/'') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.:

              ```

              this.matches(''^https://[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*(/.*)?$'')

              ```


              '
        title: remote
        required:
        - remote
      title: PublicKey
      additionalProperties: false
      description: Deprecated
    policy.obligations.AddObligationTriggerRequest:
      type: object
      properties:
        obligationValue:
          title: obligation_value
          description: Required
          $ref: '#/components/schemas/common.IdFqnIdentifier'
        action:
          title: action
          description: Required
          $ref: '#/components/schemas/common.IdNameIdentifier'
        attributeValue:
          title: attribute_value
          description: Required
          $ref: '#/components/schemas/common.IdFqnIdentifier'
        context:
          title: context
          description: "Optional\n The request context for this obligation value policy decisioning."
          $ref: '#/components/schemas/policy.RequestContext'
        metadata:
          title: metadata
          description: "Optional\n Common metadata"
          $ref: '#/components/schemas/common.MetadataMutable'
      title: AddObligationTriggerRequest
      required:
      - obligationValue
      - action
      - attributeValue
      additionalProperties: false
      description: "Obligation Triggers are owned by the namespace that owns the action and attribute value, which must\n be the same. In this way, a trigger can intentionally cross namespace boundaries: associating\n obligation values of a different namespace than the one that owns the action being taken or the attribute value."
    policy.KasPublicKeyAlgEnum:
      type: string
      title: KasPublicKeyAlgEnum
      enum:
      - KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED
      - KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048
      - KAS_PUBLIC_KEY_ALG_ENUM_RSA_4096
      - KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1
      - KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1
      - KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1
      - KAS_PUBLIC_KEY_ALG_ENUM_HPQT_XWING
      - KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP256R1_MLKEM768
      - KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP384R1_MLKEM1024
      - KAS_PUBLIC_KEY_ALG_ENUM_MLKEM_768
      - KAS_PUBLIC_KEY_ALG_ENUM_MLKEM_1024
    policy.obligations.GetObligationTriggerRequest:
      type: object
      properties:
        id:
          type: string
          title: id
          format: uuid
          description: Required
      title: GetObligationTriggerRequest
      additionalProperties: false
      description: Triggers
    policy.obligations.DeleteObligationRequest:
      type: object
      properties:
        id:
          type: string
          title: id
          format: uuid
        fqn:
          type: string
          title: fqn
          minLength: 1
          format: uri
      title: DeleteObligationRequest
      additionalProperties: false
    policy.obligations.CreateObligationValueRequest:
      type: object
      properties:
        obligationId:
          type: string
          title: obligation_id
          format: uuid
        obligationFqn:
          type: string
          title: obligation_fqn
          minLength: 1
          format: uri
        value:
          type: string
          title: value
          maxLength: 253
          description: 'Obligation value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.:

            ```

            this.matches(''^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$'')

            ```


            '
        triggers:
          type: array
          items:
            $ref: '#/components/schemas/policy.obligations.ValueTriggerRequest'
          title: triggers
          description: "Optional\n Combination of action and attribute_value that will trigger this obligation value policy decisioning."
        metadata:
          title: metadata
          description: "Optional\n Common metadata"
          $ref: '#/components/schemas/common.MetadataMutable'
      title: CreateObligationValueRequest
      required:
      - value
      additionalProperties: false
    policy.obligations.GetObligationValuesByFQNsRequest:
      type: object
      properties:
        fqns:
          type: array
          items:
            type: string
            minLength: 1
            format: uri
            maxItems: 250
            minItems: 1
            uniqueItems: true
          title: fqns
          maxItems: 250
          minItems: 1
          uniqueItems: true
      title: GetObligationValuesByFQNsRequest
      additionalProperties: false
    policy.PageResponse:
      type: object
      properties:
        currentOffset:
          type: integer
          title: current_offset
          format: int32
          description: Requested pagination offset
        nextOffset:
          type: integer
          title: next_offset
          format: int32
          description: "Calculated with request limit + offset or defaults\n Empty when none remain after current page"
        total:
          type: integer
          title: total
          format: int32
          description: Total count of entire list
      title: PageResponse
      additionalProperties: false
    policy.Value:
      type: object
      properties:
        id:
          type: string
          tit

# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/virtru/refs/heads/main/openapi/virtru-policy-obligations-service-api-openapi.yml