openapi: 3.0.1
info:
  title: Aembit.API
  version: v1
servers:
  - url: 'https://{tenant}.aembit.io'
    variables:
      tenant:
        default: tenant
        description: Aembit Tenant ID
paths:
  /api/v1/access-conditions:
    get:
      tags:
        - Access Condition
      summary: Get a page of Access Conditions
      description: Retrieve a page of Aembit Access Conditions.
      operationId: get-access-conditions
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Access Conditions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessConditionListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Access Condition
      summary: Create an Access Condition
      description: Create an Aembit Access Condition which can then be associated with an Access Policy.
      operationId: post-access-condition
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: AccessConditionDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessConditionDTO'
      responses:
        '201':
          description: Successfully created Access Condition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessConditionDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Access Condition
      summary: Update a single Access Condition
      description: Update a specific Access Condition identified by its ID.
      operationId: put-access-condition
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: AccessConditionDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessConditionDTO'
      responses:
        '200':
          description: Successfully updated Access Condition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessConditionDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/access-conditions/{id}':
    get:
      tags:
        - Access Condition
      summary: Get the identified Access Condition
      description: Get the Access Condition identified by its ID.
      operationId: get-access-condition
      parameters:
        - name: id
          in: path
          description: ID of Access Condition
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Access Condition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessConditionDTO'
        '204':
          description: Access Condition Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Access Condition
      summary: Delete a single Access Condition
      description: Delete a specific Access Condition identified by its ID.
      operationId: delete-access-condition
      parameters:
        - name: id
          in: path
          description: ID of Access Condition
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Deleted the Access Condition
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Access Condition
      summary: Patch a single Access Condition
      description: Patch a specific Access Condition identified by its ID.
      operationId: patch-access-condition
      parameters:
        - name: id
          in: path
          description: ID of Access Condition
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: AccessConditionPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccessConditionPatchDTO'
      responses:
        '200':
          description: Successfully updated Access Condition
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccessConditionDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/access-policies/{id}':
    get:
      tags:
        - Access Policy (Deprecated)
      summary: Get the identified Access Policy
      description: Get the Access Policy identified by its ID.
      operationId: get-access-policy
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyExternalDTO'
        '204':
          description: Access Policy Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Access Policy (Deprecated)
      summary: Delete an Access Policy
      description: Delete an Access Policy.
      operationId: delete-access-policy
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Deleted the Access Policy
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Access Policy (Deprecated)
      summary: Patch an Access Policy
      description: Patch an Access Policy.
      operationId: patch-access-policy
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: PolicyPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyPatchDTO'
      responses:
        '200':
          description: Patched Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/access-policies/getByWorkloadIds/{clientWorkloadId}/{serverWorkloadId}':
    get:
      tags:
        - Access Policy (Deprecated)
      summary: Get the identified Access Policy
      description: Get the Access Policy identified by a Client and Server Workload.
      operationId: get-access-policy-by-workloads
      parameters:
        - name: clientWorkloadId
          in: path
          description: ID of Client Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: serverWorkloadId
          in: path
          description: ID of Server Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/access-policies:
    get:
      tags:
        - Access Policy (Deprecated)
      summary: Get a page of Access Policies
      description: Retrieve a page of Access Policies.
      operationId: get-access-policies
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          description: Filter returned access policies using either a string or a key:value combination
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Access Policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Access Policy (Deprecated)
      summary: Create an Access Policy
      description: Create an Access Policy.
      operationId: post-access-policy
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: PolicyDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyDTO'
      responses:
        '200':
          description: Created Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Access Policy (Deprecated)
      summary: Update an Access Policy
      description: Update an Access Policy.
      operationId: put-access-policy
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: PolicyDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyDTO'
      responses:
        '200':
          description: Updated Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/access-policies/{id}/notes':
    post:
      tags:
        - Access Policy (Deprecated)
      summary: Add a note to an Access Policy
      description: Add a note to an Access Policy.
      operationId: post-access-policy-note
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: PolicyNoteDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyNoteDTO'
      responses:
        '201':
          description: Note added to an Access Policy
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/access-policies/{id}':
    get:
      tags:
        - Access Policy v2
      summary: Get the identified Access Policy
      description: Get the Access Policy identified by its ID.
      operationId: get-access-policy-v2
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPolicyDTO'
        '204':
          description: Access Policy Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Access Policy v2
      summary: Delete an Access Policy
      description: Delete an Access Policy.
      operationId: delete-access-policy-v2
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Deleted the Access Policy
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Access Policy v2
      summary: Patch an Access Policy
      description: Patch an Access Policy.
      operationId: patch-access-policy-v2
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: PatchPolicyV2DTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchPolicyV2DTO'
      responses:
        '200':
          description: Patched Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/access-policies/getByWorkloadIds/{clientWorkloadId}/{serverWorkloadId}':
    get:
      tags:
        - Access Policy v2
      summary: Get the identified Access Policy
      description: Get the Access Policy identified by a Client and Server Workload.
      operationId: get-access-policy-by-workloads-v2
      parameters:
        - name: clientWorkloadId
          in: path
          description: ID of Client Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: serverWorkloadId
          in: path
          description: ID of Server Workload
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v2/access-policies:
    get:
      tags:
        - Access Policy v2
      summary: Get a page of Access Policies
      description: Retrieve a page of Access Policies.
      operationId: get-access-policies-v2
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          description: Filter returned access policies using either a string or a key:value combination
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ModifiedAt desc
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Access Policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPolicyDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Access Policy v2
      summary: Create an Access Policy
      description: Create an Access Policy.
      operationId: post-access-policy-v2
      requestBody:
        description: CreatePolicyDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePolicyDTO'
      responses:
        '200':
          description: Created Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Access Policy v2
      summary: Update an Access Policy
      description: Update an Access Policy.
      operationId: put-access-policy-v2
      requestBody:
        description: CreatePolicyDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePolicyDTO'
      responses:
        '200':
          description: Updated Access Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/access-policies/{id}/notes':
    post:
      tags:
        - Access Policy v2
      summary: Add a note to an Access Policy
      description: Add a note to an Access Policy.
      operationId: post-access-policy-note-v2
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: PolicyNoteDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyNoteDTO'
      responses:
        '201':
          description: Note added to an Access Policy
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Access Policy v2
      summary: Gets a notes of Access Policy
      description: Retrieves notes of Access Policy.
      operationId: get-access-policy-notes-v2
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Page of Access Policy Notes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyNoteDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/access-policies/{id}/credential-mappings':
    get:
      tags:
        - Access Policy v2
      summary: Gets a credential mappings of Access Policy
      description: Retrieves credential mappings of Access Policy.
      operationId: get-access-policy-credential-mappings-v2
      parameters:
        - name: id
          in: path
          description: ID of Access Policy
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Page of Credential Mappings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PolicyNoteDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/agent-controllers:
    get:
      tags:
        - Agent Controller
      summary: Get a page of Agent Controllers
      description: Get a page of Agent Controllers.
      operationId: get-agent-controllers
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
        - name: check-tls-type
          in: query
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Page of Agent Controllers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentControllerListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Agent Controller
      summary: Create an Agent Controller
      description: Create an Agent Controller.
      operationId: post-agent-controller
      requestBody:
        description: AgentControllerDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentControllerDTO'
      responses:
        '201':
          description: Created Agent Controller
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentControllerDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Agent Controller
      summary: Update an Agent Controller
      description: Update an Agent Controller.
      operationId: put-agent-controller
      requestBody:
        description: AgentControllerDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentControllerDTO'
      responses:
        '200':
          description: Updated Agent Controller
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentControllerDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/agent-controllers/{id}':
    get:
      tags:
        - Agent Controller
      summary: Get an Agent Controller
      description: Get an Agent Controller identified by its ID.
      operationId: get-agent-controller
      parameters:
        - name: id
          in: path
          description: ID of Agent Controller
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Agent Controller
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentControllerDTO'
        '204':
          description: Agent Controller Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Agent Controller
      summary: Patch an Agent Controller
      description: Patch an Agent Controller identified by its ID.
      operationId: patch-agent-controller
      parameters:
        - name: id
          in: path
          description: ID of Agent Controller
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: AgentControllerPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentControllerPatchDTO'
      responses:
        '200':
          description: Patched Agent Controller
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentControllerDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Agent Controller
      summary: Delete an Agent Controller
      description: Delete an Agent Controller identified by its ID.
      operationId: delete-agent-controller
      parameters:
        - name: id
          in: path
          description: ID of Agent Controller
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '201':
          description: Successfully deleted Agent Controller
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/agent-controllers/{agentControllerExternalId}/device-code':
    post:
      tags:
        - Agent Controller
      summary: Generate a Device Code for an Agent Controller
      description: Generate a Device Code for an Agent Controller.
      operationId: post-agent-controller-device-code
      parameters:
        - name: agentControllerExternalId
          in: path
          description: ID of Agent Controller
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '201':
          description: Agent Controller Device Code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentControllerDeviceCodeDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/audit-logs:
    get:
      tags:
        - Audit Log
      summary: Get a page of Audit Log events
      description: Get a page of Audit Log events.
      operationId: get-audit-logs
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: search
          in: query
          schema:
            type: string
            default: ''
        - name: span-last-days
          in: query
          schema:
            type: integer
            format: int32
            default: 30
        - name: category
          in: query
          schema:
            type: string
            default: ''
        - name: severity
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Audit Logs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditLogListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/audit-logs/{id}':
    get:
      tags:
        - Audit Log
      summary: Get an Audit Log event
      description: Get an Audit Log event identified by its ID.
      operationId: get-audit-log
      parameters:
        - name: id
          in: path
          description: ID of Audit Log
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Audit Log
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditLogDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/authorization-events:
    get:
      tags:
        - Access Authorization Event
      summary: Get a page of Access Authorization Events
      description: Get a page of Access Authorization Events.
      operationId: get-access-authorization-events
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: search
          in: query
          schema:
            type: string
            default: ''
        - name: span-last-hours
          in: query
          schema:
            type: integer
            format: int32
            default: 24
        - name: severity
          in: query
          schema:
            type: string
            default: ''
        - name: event-type
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Access Authorization Events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationEventListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/authorization-events/{id}':
    get:
      tags:
        - Access Authorization Event
      summary: Get an Access Authorization Event
      description: Get an Access Authorization Event identified by its ID.
      operationId: get-access-authorization-event
      parameters:
        - name: id
          in: path
          description: ID of Access Authorization Event
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Access Authorization Event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationEventDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/credential-providers/{id}':
    get:
      tags:
        - Credential Provider (Deprecated)
      summary: Get a Credential Provider
      description: Get a Credential Provider identified by its ID.
      operationId: get-credential-provider
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Credential Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialProviderUIDTO'
        '204':
          description: Credential Provider Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Credential Provider (Deprecated)
      summary: Delete a Credential Provider
      description: Delete a Credential Provider identified by its ID.
      operationId: delete-credential-provider
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Deleted Credential Provider
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Credential Provider (Deprecated)
      summary: Patch a Credential Provider
      description: Patch a Credential Provider.
      operationId: patch-credential-provider
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialProviderPatchDTO'
      responses:
        '201':
          description: Patched Credential Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialProviderUIDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/credential-providers/{id}/authorize':
    get:
      tags:
        - Credential Provider (Deprecated)
      summary: Get a Credential Provider Authorization URL
      description: Get a Credential Provider Authorization URL identified by the Credential Provider ID.
      operationId: get-credential-provider-authorization
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '302':
          description: Redirects to the Credential Provider Authorization URL
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/credential-providers:
    get:
      tags:
        - Credential Provider (Deprecated)
      summary: Get a page of Credential Providers
      description: Get a page of Credential Providers.
      operationId: get-credential-providers
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Credential Providers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialProviderUIDTOCredentialProviderListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Credential Provider (Deprecated)
      summary: Create a Credential Provider
      description: Create a Credential Provider.
      operationId: post-credential-provider
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialProviderDTO'
      responses:
        '201':
          description: Created Credential Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialProviderUIDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Credential Provider (Deprecated)
      summary: Update a Credential Provider
      description: Update a Credential Provider.
      operationId: put-credential-provider
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialProviderDTO'
      responses:
        '201':
          description: Updated Credential Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialProviderUIDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/credential-providers/{id}/verification':
    get:
      tags:
        - Credential Provider (Deprecated)
      summary: Verify the Credential Provider
      description: Verify the Credential Provider will successfully return a credential.
      operationId: get-credential-provider-verification
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Details on the verification of a Credential Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/credential-integrations/{id}':
    get:
      tags:
        - Credential Provider Integration
      summary: Get a Credential Provider Integration
      description: Get a Credential Provider Integration identified by its ID.
      operationId: get-credential-provider-integration
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider Integration
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Credential Provider Integration
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
                  - $ref: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
                description: Individual Credential Provider Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Credential Provider Integration
      summary: Delete a Credential Provider Integration
      description: Delete a Credential Provider Integration identified by its ID.
      operationId: delete-credential-provider-integration
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider Integration
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Credential Provider Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Credential Provider Integration
      summary: Patch a Credential Provider Integration
      description: Patch a Credential Provider Integration identified by its ID.
      operationId: patch-credential-provider-integration
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider Integration
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderIntegrationPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialProviderIntegrationPatchDTO'
      responses:
        '200':
          description: Patched Credential Provider Integration
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
                  - $ref: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
                description: Individual Credential Provider Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/credential-integrations:
    get:
      tags:
        - Credential Provider Integration
      summary: Get a page of Credential Provider Integrations
      description: Get a page of Credential Provider Integrations.
      operationId: get-credential-provider-integrations
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Credential Provider Integrations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCredentialProviderIntegrationDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Credential Provider Integration
      summary: Create a Credential Provider Integration
      description: Create a Credential Provider Integration.
      operationId: post-credential-provider-integration
      requestBody:
        description: CredentialProviderIntegrationDTO
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
                - $ref: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
              description: Individual Credential Provider Integration
      responses:
        '201':
          description: Created Credential Provider Integration
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
                  - $ref: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
                description: Individual Credential Provider Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Credential Provider Integration
      summary: Update a Credential Provider Integration
      description: Update a Credential Provider Integration.
      operationId: put-credential-provider-integration
      requestBody:
        description: CredentialProviderIntegrationDTO
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
                - $ref: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
              description: Individual Credential Provider Integration
      responses:
        '200':
          description: Updated Credential Provider Integration
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
                  - $ref: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
                description: Individual Credential Provider Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v2/credential-providers:
    post:
      tags:
        - Credential Provider v2
      summary: Create a Credential Provider
      description: Create a Credential Provider.
      operationId: post-credential-provider2
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderV2DTO
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/CredentialProviderV2DTO'
                - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
                - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
                - $ref: '#/components/schemas/CPAwsStsV2DTO'
                - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
                - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
                - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
                - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
                - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
                - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
                - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
                - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
      responses:
        '201':
          description: Created Credential Provider
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderV2DTO'
                  - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
                  - $ref: '#/components/schemas/CPAwsStsV2DTO'
                  - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
                  - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
                  - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Credential Provider v2
      summary: Update a Credential Provider
      description: Update a Credential Provider.
      operationId: put-credential-provider2
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderV2DTO
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/CredentialProviderV2DTO'
                - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
                - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
                - $ref: '#/components/schemas/CPAwsStsV2DTO'
                - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
                - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
                - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
                - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
                - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
                - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
                - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
                - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
      responses:
        '200':
          description: Updated Credential Provider
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderV2DTO'
                  - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
                  - $ref: '#/components/schemas/CPAwsStsV2DTO'
                  - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
                  - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
                  - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Credential Provider v2
      summary: Get a page of Credential Providers
      description: Get a page of Credential Providers.
      operationId: get-credential-providers-v2
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Credential Providers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CredentialProviderV2DTOCredentialProviderListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/credential-providers/{id}':
    get:
      tags:
        - Credential Provider v2
      summary: Get a Credential Provider
      description: Get a Credential Provider identified by its ID.
      operationId: get-credential-provider2
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Credential Provider
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderV2DTO'
                  - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
                  - $ref: '#/components/schemas/CPAwsStsV2DTO'
                  - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
                  - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
                  - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
        '204':
          description: Credential Provider Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Credential Provider v2
      summary: Delete a Credential Provider
      description: Delete a Credential Provider identified by its ID.
      operationId: delete-credential-provider2
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Deleted Credential Provider
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Credential Provider v2
      summary: Patch a Credential Provider
      description: Patch a Credential Provider.
      operationId: patch-credential-provider-v2
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: CredentialProviderPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialProviderPatchDTO'
      responses:
        '200':
          description: Patched Credential Provider
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CredentialProviderV2DTO'
                  - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
                  - $ref: '#/components/schemas/CPAwsStsV2DTO'
                  - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
                  - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
                  - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
                  - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
                  - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/credential-providers/{id}/verification':
    get:
      tags:
        - Credential Provider v2
      summary: Verify the Credential Provider
      description: Verify the Credential Provider will successfully return a credential.
      operationId: get-credential-provider-verification-v2
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Details on the verification of a Credential Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v2/credential-providers/{id}/authorize':
    get:
      tags:
        - Credential Provider v2
      summary: Get a Credential Provider Authorization URL
      description: Get a Credential Provider Authorization URL identified by the Credential Provider ID.
      operationId: get-credential-provider-authorization-v2
      parameters:
        - name: id
          in: path
          description: ID of Credential Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '302':
          description: Redirects to the Credential Provider Authorization URL
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/discovery-integrations:
    get:
      tags:
        - DiscoveryIntegration
      summary: Get a page of Integrations
      description: Get a page of Integrations.
      operationId: get-discovery-integrations
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Integrations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryIntegrationListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - DiscoveryIntegration
      summary: Create an Integration
      description: Create an Integration.
      operationId: post-discovery-integration
      requestBody:
        description: DiscoveryIntegrationDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscoveryIntegrationDTO'
      responses:
        '201':
          description: Created Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryIntegrationDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - DiscoveryIntegration
      summary: Update an Integration
      description: Update an Integration.
      operationId: put-discovery-integration
      requestBody:
        description: DiscoveryIntegrationDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscoveryIntegrationDTO'
      responses:
        '200':
          description: Updated Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryIntegrationDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/discovery-integrations/{id}':
    get:
      tags:
        - DiscoveryIntegration
      summary: Get an Integration
      description: Get an Integration.
      operationId: get-discovery-integration
      parameters:
        - name: id
          in: path
          description: ID of Integration
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryIntegrationDTO'
        '204':
          description: Integration Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - DiscoveryIntegration
      summary: Delete an Integration
      description: Delete an Integration as identified by its ID.
      operationId: delete-discovery-integration
      parameters:
        - name: id
          in: path
          description: ID of Integration
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successfully deleted Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - DiscoveryIntegration
      summary: Patch an Integration
      description: Patch an Integration as identified by its ID.
      operationId: patch-discovery-integration
      parameters:
        - name: id
          in: path
          description: ID of Integration
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: DiscoveryIntegrationPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscoveryIntegrationPatchDTO'
      responses:
        '200':
          description: Patched Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryIntegrationDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/workload-events:
    get:
      tags:
        - Workload Event
      summary: Get a page of Workload Events
      description: Get a page of Workload Events.
      operationId: get-workload-events
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: search
          in: query
          schema:
            type: string
            default: ''
        - name: span-last-hours
          in: query
          schema:
            type: integer
            format: int32
            default: 24
        - name: application-protocol
          in: query
          schema:
            type: string
            default: ''
        - name: severity
          in: query
          schema:
            type: string
            default: ''
        - name: source-workload
          in: query
          schema:
            type: string
            format: uuid
        - name: target-workload
          in: query
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Page of Workload Events
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/workload-events/{id}':
    get:
      tags:
        - Workload Event
      summary: Get a Workload Event
      description: Get a Workload Event.
      operationId: get-workload-event
      parameters:
        - name: id
          in: path
          description: ID of Workload Event
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Workload Event
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EventDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/health:
    get:
      tags:
        - Health
      summary: Aembit Cloud API Health
      description: Get the health of the Aembit Cloud API.
      operationId: get-health
      responses:
        '200':
          description: API Health
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthDTO'
  /api/v1/integrations:
    get:
      tags:
        - Integration
      summary: Get a page of Integrations
      description: Get a page of Integrations.
      operationId: get-integrations
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Integrations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Integration
      summary: Create an Integration
      description: Create an Integration.
      operationId: post-integration
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: IntegrationDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationDTO'
      responses:
        '201':
          description: Created Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Integration
      summary: Update an Integration
      description: Update an Integration.
      operationId: put-integration
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: IntegrationDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationDTO'
      responses:
        '200':
          description: Updated Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/integrations/{id}':
    get:
      tags:
        - Integration
      summary: Get an Integration
      description: Get an Integration.
      operationId: get-integration
      parameters:
        - name: id
          in: path
          description: ID of Integration
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDTO'
        '204':
          description: Integration Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Integration
      summary: Delete an Integration
      description: Delete an Integration as identified by its ID.
      operationId: delete-integration
      parameters:
        - name: id
          in: path
          description: ID of Integration
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successfully deleted Integration
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Integration
      summary: Patch an Integration
      description: Patch an Integration as identified by its ID.
      operationId: patch-integration
      parameters:
        - name: id
          in: path
          description: ID of Integration
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: IntegrationPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IntegrationPatchDTO'
      responses:
        '200':
          description: Patched Integration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/log-streams:
    get:
      tags:
        - Log Stream
      summary: Get a page of Log Streams
      description: Get a page of Log Streams.
      operationId: get-log-streams
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Log Streams
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogStreamListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Log Stream
      summary: Create a Log Stream
      description: Create a Log Stream.
      operationId: post-log-stream
      requestBody:
        description: LogStreamDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogStreamDTO'
      responses:
        '201':
          description: Created Log Stream
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogStreamDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Log Stream
      summary: Update a Log Stream
      description: Update a Log Stream.
      operationId: put-log-stream
      requestBody:
        description: LogStreamDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogStreamDTO'
      responses:
        '200':
          description: Updated Log Stream
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogStreamDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/log-streams/{id}':
    get:
      tags:
        - Log Stream
      summary: Get a Log Stream
      description: Get a Log Stream identified by its ID.
      operationId: get-log-stream
      parameters:
        - name: id
          in: path
          description: ID of Log Stream
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Log Stream
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogStreamDTO'
        '204':
          description: Log Stream Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Log Stream
      summary: Delete a Log Stream
      description: Delete a Log Stream identified by its ID.
      operationId: delete-log-stream
      parameters:
        - name: id
          in: path
          description: ID of Log Stream
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Log Stream
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Log Stream
      summary: Patch a Log Stream
      description: Patch a Log Stream identified by its ID.
      operationId: patch-log-stream
      parameters:
        - name: id
          in: path
          description: ID of Log Stream
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: LogStreamPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogStreamPatchDTO'
      responses:
        '200':
          description: Patched Log Stream
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogStreamDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/resource-sets/{id}':
    get:
      tags:
        - Resource Set
      summary: Get a Resource Set
      description: Get a Resource Set identified by its ID.
      operationId: get-resource-set
      parameters:
        - name: id
          in: path
          description: ID of Resource Set
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Resource Set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceSetDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Resource Set
      summary: Patch a Resource Set
      description: Patch a Resource Set identified by its ID.
      operationId: patch-resource-set
      parameters:
        - name: id
          in: path
          description: ID of Resource Set
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: ResourceSetPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourceSetPatchDTO'
      responses:
        '200':
          description: Patched Resource Set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceSetDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/resource-sets:
    get:
      tags:
        - Resource Set
      summary: Get a page of Resource Sets
      description: Get a page of Resource Sets.
      operationId: get-resource-sets
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Resource Sets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceSetDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Resource Set
      summary: Create a Resource Set
      description: Create a Resource Set.
      operationId: post-resource-set
      requestBody:
        description: ResourceSetDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourceSetDTO'
      responses:
        '201':
          description: Created Resource Set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceSetDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Resource Set
      summary: Update a Resource Set
      description: Update a Resource Set.
      operationId: put-resource-set
      requestBody:
        description: ResourceSetDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResourceSetDTO'
      responses:
        '200':
          description: Updated Resource Set
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceSetDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/roles:
    get:
      tags:
        - Role
      summary: Get a page of Roles
      description: Get a page of Roles.
      operationId: get-roles
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Roles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Role
      summary: Create a new Role
      description: Create a new Role.
      operationId: post-role
      requestBody:
        description: RoleDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleDTO'
      responses:
        '201':
          description: Created Role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Role
      summary: Update a Role
      description: Update a Role.
      operationId: put-role
      requestBody:
        description: RoleDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleDTO'
      responses:
        '200':
          description: Updated Role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/roles/{id}':
    get:
      tags:
        - Role
      summary: Get a Role
      description: Get a Role identified by its ID.
      operationId: get-role
      parameters:
        - name: id
          in: path
          description: ID of Role
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleDTO'
        '204':
          description: Role Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Role
      summary: Delete a Role
      description: Delete a Role identified by its ID.
      operationId: delete-role
      parameters:
        - name: id
          in: path
          description: ID of Role
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Role
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Role
      summary: Patch a Role
      description: Patch a Role identified by its ID.
      operationId: patch-role
      parameters:
        - name: id
          in: path
          description: ID of Role
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: RolePatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RolePatchDTO'
      responses:
        '200':
          description: Patch Role
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/routings/{id}':
    get:
      tags:
        - Routing
      summary: Get a Routing
      description: Get a Routing identified by its ID.
      operationId: get-routing
      parameters:
        - name: id
          in: path
          description: ID of Routing
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Routing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Routing
      summary: Patch a Routing
      description: Patch a Routing identified by its ID.
      operationId: patch-routing
      parameters:
        - name: id
          in: path
          description: ID of Routing
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: RoutingPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoutingPatchDTO'
      responses:
        '200':
          description: Patched Routing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/routings:
    get:
      tags:
        - Routing
      summary: Get a page of Routings
      description: Get a page of Routings.
      operationId: get-routings
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Routings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Routing
      summary: Create a Routing
      description: Create a Routing.
      operationId: post-routing
      requestBody:
        description: RoutingDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoutingDTO'
      responses:
        '201':
          description: Created Routing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Routing
      summary: Update a Routing
      description: Update a Routing.
      operationId: put-routing
      requestBody:
        description: RoutingDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoutingDTO'
      responses:
        '200':
          description: Updated Routing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/signin-policies:
    get:
      tags:
        - SignOn Policy
      summary: Get a SignOn Policy
      description: Get a SignOn Policy by its name.
      operationId: get-signon-policy
      responses:
        '200':
          description: SignOn Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSignInPolicyDTO'
        '204':
          description: SignOn Policy Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/signin-policies/mfa:
    put:
      tags:
        - MFA SignOn Policy
      summary: Update a MFA SignOn Policy
      description: Update a MFA SignOn Policy.
      operationId: put-mfa-signon Policy
      requestBody:
        description: MFASignInPolicyDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MFASignInPolicyDTO'
      responses:
        '200':
          description: Updated MFA SignOn Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MFASignInPolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/signin-policies/sso:
    put:
      tags:
        - SSO SignOn Policy
      summary: Update a SSO SignOn Policy
      description: Update a SSO SignOn Policy.
      operationId: put-SSO-signon Policy
      requestBody:
        description: SSOSignInPolicyDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SSOSignInPolicyDTO'
      responses:
        '200':
          description: Updated SSO SignOn Policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOSignInPolicyDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/sso-idps/{id}/verification':
    get:
      tags:
        - SSO Identity Provider
      summary: Verify the SSO Identity Provider
      description: Verify the SSO Identity Provider has all necessary configuration data.
      operationId: get-identity-provider-verification
      parameters:
        - name: id
          in: path
          description: ID of SSO Identity Provider
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: SSO Identity Provider verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/sso-idps/{id}':
    get:
      tags:
        - SSO Identity Provider
      summary: Get a SSO Identity Provider
      description: Get a SSO Identity Provider identified by its ID.
      operationId: get-identity-provider
      parameters:
        - name: id
          in: path
          description: ID of SSO Identity Provider
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: SSO Identity Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOIdentityProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - SSO Identity Provider
      summary: Delete a SSO Identity Provider
      description: Delete a SSO Identity Provider identified by its ID.
      operationId: delete-identity-provider
      parameters:
        - name: id
          in: path
          description: ID of SSO Identity Provider
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted SSO Identity Provider
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - SSO Identity Provider
      summary: Patch a SSO Identity Provider
      description: Patch a SSO Identity Provider identified by its ID.
      operationId: patch-identity-provider
      parameters:
        - name: id
          in: path
          description: ID of SSO Identity Provider
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: SSOIdentityProviderPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SSOIdentityProviderPatchDTO'
      responses:
        '200':
          description: Patched SSO Identity Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOIdentityProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/sso-idps:
    get:
      tags:
        - SSO Identity Provider
      summary: Get a page of SSO Identity Providers
      description: Get a page of SSO Identity Providers.
      operationId: get-identity-providers
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of SSO Identity Providers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOIdentityProviderDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - SSO Identity Provider
      summary: Create a SSO Identity Provider
      description: Create a SSO Identity Provider.
      operationId: post-identity-provider
      requestBody:
        description: SSOIdentityProviderDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SSOIdentityProviderDTO'
      responses:
        '201':
          description: Created SSO Identity Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOIdentityProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - SSO Identity Provider
      summary: Update a SSO Identity Provider
      description: Update a SSO Identity Provider.
      operationId: put-identity-provider
      requestBody:
        description: SSOIdentityProviderDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SSOIdentityProviderDTO'
      responses:
        '200':
          description: Updated SSO Identity Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SSOIdentityProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/certificate-authorities/{id}':
    delete:
      tags:
        - Standalone Certificate Authority
      summary: Delete a Standalone Certificate Authority
      description: Delete a Standalone Certificate Authority identified by its ID.
      operationId: delete-standalone-certificate-authority
      parameters:
        - name: id
          in: path
          description: ID of Standalone Certificate Authority
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Standalone Certificate Authority
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Standalone Certificate Authority
      summary: Get a Standalone Certificate Authority
      description: Get a Standalone Certificate Authority identified by its ID.
      operationId: get-standalone-certificate-authority
      parameters:
        - name: id
          in: path
          description: ID of Standalone Certificate Authority
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Standalone Certificate Authority
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandaloneCertificateResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Standalone Certificate Authority
      summary: Patch a Standalone Certificate Authority
      description: Patch a Standalone Certificate Authority identified by its ID.
      operationId: patch-standalone-certificate-authority
      parameters:
        - name: id
          in: path
          description: ID of Standalone Certificate Authority
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: StandaloneCertificatePatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StandaloneCertificatePatchDTO'
      responses:
        '200':
          description: Patched Standalone Certificate Authority
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandaloneCertificateResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/certificate-authorities:
    get:
      tags:
        - Standalone Certificate Authority
      summary: Get a page of Standalone Certificate Authorities
      description: Get a page of Standalone Certificate Authorities.
      operationId: get-standalone-certificate-authorities
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Standalone Certificate Authorities
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandaloneCertificateResponseDTOListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Standalone Certificate Authority
      summary: Create a Standalone Certificate Authority
      description: Create a Standalone Certificate Authority.
      operationId: post-standalone-certificate-authority
      requestBody:
        description: StandaloneCertificateDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StandaloneCertificateRequestDTO'
      responses:
        '201':
          description: Created Standalone Certificate Authority
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandaloneCertificateResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Standalone Certificate Authority
      summary: Update a Standalone Certificate Authority
      description: Update a Standalone Certificate Authority.
      operationId: put-standalone-certificate-authority
      requestBody:
        description: StandaloneCertificateDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StandaloneCertificateRequestDTO'
      responses:
        '200':
          description: Updated Standalone Certificate Authority
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandaloneCertificateResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/certificate-authorities/{id}/root-ca':
    get:
      tags:
        - Standalone TLS Decrypt
      summary: Download Standalone Root CA Certificate
      description: Download the Standalone Root CA Certificate. This CA Certificate can be used for TLS verification when utilizing the Aembit TLS Decrypt feature.
      operationId: standalone-root-ca
      parameters:
        - name: id
          in: path
          description: ID of Standalone Certificate Authority
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/x-pem-file:
              schema:
                type: string
                format: binary
  /api/v1/root-ca:
    get:
      tags:
        - TLS Decrypt
      summary: Download Tenant Root CA Certificate
      description: Download the Tenant Root CA Certificate. This CA Certificate can be used for TLS verification when utilizing the Aembit TLS Decrypt feature.
      operationId: root-ca
      responses:
        '200':
          description: OK
          content:
            application/x-pem-file:
              schema:
                type: string
                format: binary
  /api/v1/trust-providers:
    get:
      tags:
        - Trust Provider
      summary: Get a page of Trust Providers
      description: Get a page of Trust Providers.
      operationId: get-trust-providers
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
        - name: active
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: Page of Trust Providers
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProviderListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - Trust Provider
      summary: Create a Trust Provider
      description: Create a Trust Provider.
      operationId: post-trust-provider
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: TrustProviderDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrustProviderDTO'
      responses:
        '200':
          description: Created Trust Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Trust Provider
      summary: Update a Trust Provider
      description: Update a Trust Provider.
      operationId: put-trust-provider
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: TrustProviderDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrustProviderDTO'
      responses:
        '200':
          description: Updated Trust Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/trust-providers/{id}':
    get:
      tags:
        - Trust Provider
      summary: Get a Trust Provider
      description: Get a Trust Provider identified by its ID.
      operationId: get-trust-provider
      parameters:
        - name: id
          in: path
          description: ID of Trust Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Trust Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProviderDTO'
        '204':
          description: Trust Provider Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Trust Provider
      summary: Delete a Trust Provider
      description: Delete a Trust Provider identified by its ID.
      operationId: delete-trust-provider
      parameters:
        - name: id
          in: path
          description: ID of Trust Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Trust Provider
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    patch:
      tags:
        - Trust Provider
      summary: Patch a Trust Provider
      description: Patch a Trust Provider.
      operationId: patch-trust-provider
      parameters:
        - name: id
          in: path
          description: ID of Trust Provider
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: TrustProviderPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TrustProviderPatchDTO'
      responses:
        '200':
          description: Patched Trust Provider
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrustProviderDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/users:
    get:
      tags:
        - User
      summary: Get a page of Users
      description: Get a page of Users.
      operationId: get-users
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Users
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    post:
      tags:
        - User
      summary: Create a User
      description: Create a User.
      operationId: post-user
      requestBody:
        description: UserDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserDTO'
      responses:
        '201':
          description: Created User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/users/{id}':
    patch:
      tags:
        - User
      summary: Patch a User
      description: Patch a User identified by its ID.
      operationId: patch-user
      parameters:
        - name: id
          in: path
          description: ID of User
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: UserPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPatchDTO'
      responses:
        '200':
          description: Patched User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - User
      summary: Get a User
      description: Get a User identified by its ID.
      operationId: get-user
      parameters:
        - name: id
          in: path
          description: ID of User
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '201':
          description: User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDTO'
        '204':
          description: User Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - User
      summary: Update a User
      description: Update a User.
      operationId: put-user
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: UserDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserDTO'
      responses:
        '200':
          description: User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - User
      summary: Delete a User
      description: Delete a User identified by its ID.
      operationId: delete-user
      parameters:
        - name: id
          in: path
          description: ID of User
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted User
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/users/{id}/unlock':
    post:
      tags:
        - User
      summary: Unlock a User
      description: Unlock a User identified by its ID.
      operationId: post-user-unlock
      parameters:
        - name: id
          in: path
          description: ID of User
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Successfully unlocked User
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/server-workloads:
    post:
      tags:
        - Server Workload
      summary: Create a Server Workload
      description: Create a Server Workload.
      operationId: post-server-workload
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: ServerWorkloadExternalDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServerWorkloadExternalDTO'
      responses:
        '204':
          description: Created Server Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerWorkloadExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Server Workload
      summary: Update a Server Workload
      description: Update a Server Workload.
      operationId: put-server-workload
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: ServerWorkloadExternalDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServerWorkloadExternalDTO'
      responses:
        '200':
          description: Updated Server Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerWorkloadExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Server Workload
      summary: Get a page of Server Workloads
      description: Get a page of Server Workloads.
      operationId: get-server-workloads
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Server Workloads
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerWorkloadListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  /api/v1/client-workloads:
    post:
      tags:
        - Client Workload
      summary: Create a Client Workload
      description: Create a Client Workload.
      operationId: post-client-workload
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: ClientWorkloadExternalDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientWorkloadExternalDTO'
      responses:
        '204':
          description: Created Client Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientWorkloadExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    put:
      tags:
        - Client Workload
      summary: Update a Client Workload
      description: Update a Client Workload.
      operationId: put-client-workload
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: ClientWorkloadExternalDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientWorkloadExternalDTO'
      responses:
        '200':
          description: Updated Client Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientWorkloadExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Client Workload
      summary: Get a page of Client Workloads
      description: Get a page of Client Workloads.
      operationId: get-client-workloads
      parameters:
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
        - name: page
          in: query
          schema:
            type: integer
            format: int32
            default: 1
        - name: per-page
          in: query
          schema:
            type: integer
            format: int32
            default: 100
        - name: filter
          in: query
          schema:
            type: string
            default: ''
        - name: order
          in: query
          schema:
            type: string
            default: ''
        - name: group-by
          in: query
          schema:
            type: string
            default: ''
      responses:
        '200':
          description: Page of Client Workloads
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientWorkloadListDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/server-workloads/{id}':
    patch:
      tags:
        - Server Workload
      summary: Patch a Server Workload
      description: Patch a Server Workload.
      operationId: patch-server-workload
      parameters:
        - name: id
          in: path
          description: ID of Server Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: EntityPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntityPatchDTO'
      responses:
        '200':
          description: Patched Server Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerWorkloadExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Server Workload
      summary: Get a Server Workload
      description: Get a Server Workload identified by its ID.
      operationId: get-server-workload
      parameters:
        - name: id
          in: path
          description: ID of Server Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Server Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerWorkloadExternalDTO'
        '204':
          description: Server Workload Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Server Workload
      summary: Delete a Server Workload
      description: Delete a Server Workload identified by its ID.
      operationId: delete-server-workload
      parameters:
        - name: id
          in: path
          description: ID of Server Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Server Workload
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
  '/api/v1/client-workloads/{id}':
    patch:
      tags:
        - Client Workload
      summary: Patch a Client Workload
      description: Patch a Client Workload.
      operationId: patch-client-workload
      parameters:
        - name: id
          in: path
          description: ID of Client Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      requestBody:
        description: ClientWorkloadPatchDTO
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClientWorkloadPatchDTO'
      responses:
        '200':
          description: Patched Client Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientWorkloadExternalDTO'
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    get:
      tags:
        - Client Workload
      summary: Get a Client Workload
      description: Get a Client Workload identified by its ID.
      operationId: get-client-workload
      parameters:
        - name: id
          in: path
          description: ID of Client Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Client Workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientWorkloadExternalDTO'
        '204':
          description: Client Workload Not Found
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
    delete:
      tags:
        - Client Workload
      summary: Delete a Client Workload
      description: Delete a Client Workload identified by its ID.
      operationId: delete-client-workload
      parameters:
        - name: id
          in: path
          description: ID of Client Workload
          required: true
          schema:
            type: string
            format: uuid
        - name: X-Aembit-ResourceSet
          in: header
          schema:
            type: string
            format: uuid
      responses:
        '204':
          description: Successfully deleted Client Workload
        '400':
          description: Bad Request
        '401':
          description: Not Authenticated
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponseDTO'
components:
  schemas:
    AccessConditionDTO:
      required:
        - conditions
        - isActive
        - name
        - resourceSet
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        integrationID:
          type: string
          description: ID of the Integration Entity used by this Access Condition
          format: uuid
        integration:
          $ref: '#/components/schemas/IntegrationDTO'
        conditions:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonNode'
          description: Rules which are enforced by the Access Condition
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Access Condition
          format: int32
      additionalProperties: false
      description: DTO of an individual Access Condition for enforcement during Access Policy evaluation
    AccessConditionListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          format: int32
        recordsTotal:
          type: integer
          format: int32
        accessConditions:
          type: array
          items:
            $ref: '#/components/schemas/AccessConditionDTO'
          nullable: true
      additionalProperties: false
      description: Page of Access Conditions
    AccessConditionPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch Request DTO for individual Access Condition
    AgentControllerDTO:
      required:
        - name
      type: object
      properties:
        id:
          type: integer
          description: ID of the Agent Controller
          format: int
        externalId:
          type: string
          description: ID of the Agent Controller
          format: uuid
        createdAt:
          type: string
          description: Agent Controller creation Timestamp
          format: date
        version:
          type: string
          description: Last reported software version of the Agent Controller
          nullable: true
        isActive:
          type: boolean
          description: Active status of the Agent Controller
          format: boolean
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Agent Controller
        description:
          type: string
          description: Description of the Agent Controller
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/AgentControllerTagDTO'
          description: Tags assigned to the Agent Controller
          nullable: true
        tlsCertificates:
          type: array
          items:
            $ref: '#/components/schemas/AgentControllerTlsCertificateDTO'
          description: TLS Certificates associated with the Agent Controller
          nullable: true
        trustProviderId:
          type: string
          description: Trust Provider ID of the Agent Controller used for attested authentication
          format: uuid
          nullable: true
        trustProvider:
          $ref: '#/components/schemas/TrustProviderDTO'
        modifiedAt:
          type: string
          description: Agent Controller modification Timestamp
          format: date
        isHealthy:
          type: boolean
          description: Recently reported Agent Controller Health Status
          format: boolean
        lastReportedUptime:
          type: integer
          description: Last Reported Agent Controller Uptime (in seconds)
          format: int64
        lastReportedHealthTime:
          type: string
          description: Last Reported Agent Controller Health Time
          format: date
          nullable: true
      additionalProperties: false
      description: DTO of an individual Agent Controller for Agent Proxy management
    AgentControllerDeviceCodeDTO:
      type: object
      properties:
        device_code:
          type: string
          description: One time use OAuth 2 Device Code for use during AgentController deployment and registration
          nullable: true
      additionalProperties: false
      description: DTO of an individual Agent Controller Device Code
    AgentControllerListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of AgentControllers available
          format: int32
        agentControllers:
          type: array
          items:
            $ref: '#/components/schemas/AgentControllerDTO'
          description: Page of AgentControllers for this request
          nullable: true
      additionalProperties: false
      description: Page of Agent Controllers for Agent Proxy management
    AgentControllerPatchDTO:
      type: object
      properties:
        version:
          type: string
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified Agent Controller
          format: boolean
          nullable: true
        trustProviderId:
          type: string
          description: New Trust Provider to use for the identified Agent Controller
          format: uuid
          nullable: true
      additionalProperties: false
      description: Patch Request DTO for individual Agent Controller
    AgentControllerTagDTO:
      required:
        - key
        - value
      type: object
      properties:
        key:
          minLength: 1
          type: string
          description: Key for the Agent Controller Tag
        value:
          minLength: 1
          type: string
          description: Value for the Agent Controller Tag
      additionalProperties: false
      description: Agent Controller Tag key and value
    AgentControllerTlsCertificateDTO:
      required:
        - createdAt
        - hostName
        - notAfter
        - notBefore
        - serialNumber
        - subject
        - thumbprint
      type: object
      properties:
        subject:
          type: string
          description: Subject of the Certificate
        serialNumber:
          minLength: 1
          type: string
          description: Serial Number of the Certificate
        thumbprint:
          minLength: 1
          type: string
          description: Thumbprint of the Certificate
        notBefore:
          type: string
          description: Creation Timestamp of the Certificate
          format: date-time
        notAfter:
          type: string
          description: Expiration Timestamp of the Certificate
          format: date-time
        hostName:
          minLength: 1
          type: string
          description: Last reported Hostname for the Agent Controller
        createdAt:
          type: string
          description: Creation Timestamp for this Agent Controller TLS Certificate
          format: date-time
        isManagedByAembit:
          type: boolean
          description: True if the Agent Controller TLS Certificate is managed by Aembit
          format: boolean
      additionalProperties: false
      description: Agent Controller TLS Certificate information
    AuditActorDTO:
      type: object
      properties:
        type:
          type: string
          description: 'The type of Audit Log actor (e.g. User, System, or Role)'
          nullable: true
        displayName:
          type: string
          description: Fully qualified Audit Log Actor name
          nullable: true
        userName:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        credentialProviderId:
          type: string
          description: Credential Provider ID that was used to generate the Role-based Access Token for this Audit Log action
          nullable: true
        accessPolicyId:
          type: string
          description: Access Policy ID that was used to generate the Role-based Access Token for this Audit Log action
          nullable: true
      additionalProperties: false
      description: DTO for the Actor details of an Aembit Audit Log
    AuditClientDTO:
      type: object
      properties:
        ipAddress:
          type: string
          description: IP Address of the remote client
          nullable: true
        userAgent:
          $ref: '#/components/schemas/UserAgentDTO'
      additionalProperties: false
      description: DTO for the Client details of an Aembit Audit Log
    AuditLogDTO:
      type: object
      properties:
        externalId:
          type: string
          description: ID of an Aembit Audit Log
          format: uuid
        resourceSetId:
          type: string
          description: Resource Set ID of an Aembit Audit Log
          format: uuid
        category:
          type: string
          description: 'Category of an Aembit Audit Log (e.g. Users, AccessPolicies, Workloads, etc.)'
          nullable: true
        actor:
          $ref: '#/components/schemas/AuditActorDTO'
        activity:
          type: string
          description: Activity of an Aembit Audit Log
          nullable: true
        target:
          type: string
          description: Target of an Aembit Audit Log
          nullable: true
        client:
          $ref: '#/components/schemas/AuditClientDTO'
        outcome:
          $ref: '#/components/schemas/AuditOutcomeDTO'
        trustProvider:
          $ref: '#/components/schemas/EventResultDTO'
        severity:
          type: string
          description: Severity of an Aembit Audit Log
          nullable: true
        createdAt:
          type: string
          description: Timestamp of when this Aembit Audit Log was created
          format: date-time
      additionalProperties: false
      description: DTO for an individual Aembit Audit Log
    AuditLogListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Aembit Audit Logs
          format: int32
        auditLogs:
          type: array
          items:
            $ref: '#/components/schemas/AuditLogDTO'
          description: Page of Aembit Audit Logs
          nullable: true
      additionalProperties: false
      description: Page of Aembit Audit Logs
    AuditOutcomeDTO:
      type: object
      properties:
        reason:
          type: string
          description: Reason for the outcome of this Aembit Audit Log
          nullable: true
        result:
          type: string
          description: Outcome of the action associated with this Aembit Audit Log
          nullable: true
      additionalProperties: false
      description: DTO for the Outcome of an individual Aembit Audit Log
    AuthorizationEventAtttestationResultDTO:
      type: object
      properties:
        id:
          type: string
          description: Access Entity ID
          format: uuid
        name:
          type: string
          description: Access Entity Name
          nullable: true
        result:
          type: string
          description: Access Entity processing Result for this Access Authorization Event
          nullable: true
        matches:
          type: array
          items:
            type: string
          description: List of matched Access Entity Identifiers
          nullable: true
        reason:
          type: string
          nullable: true
        attribute:
          type: string
          nullable: true
        expectedValue:
          type: string
          nullable: true
        actualValue:
          type: string
          nullable: true
      additionalProperties: false
      description: Individual Access Entity Attestation Result of an Aembit Access Authorization Event
    AuthorizationEventCPResultDTO:
      type: object
      properties:
        id:
          type: string
          description: Access Entity ID
          format: uuid
        name:
          type: string
          description: Access Entity Name
          nullable: true
        result:
          type: string
          description: Access Entity processing Result for this Access Authorization Event
          nullable: true
        matches:
          type: array
          items:
            type: string
          description: List of matched Access Entity Identifiers
          nullable: true
        type:
          type: string
          description: Credential Provider Type
          nullable: true
        reason:
          type: string
          description: Credential Provider Failure Reason
          nullable: true
      additionalProperties: false
      description: Individual Credential Provider Result of an Aembit Access Authorization Event
    AuthorizationEventDTO:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/AuthorizationEventDataMetaDTO'
        outcome:
          $ref: '#/components/schemas/AuthorizationEventOutcomeDTO'
        clientRequest:
          $ref: '#/components/schemas/ClientRequestDTO'
        environment:
          $ref: '#/components/schemas/AuthorizationEventEnvironmentDataDTO'
        clientWorkload:
          $ref: '#/components/schemas/AuthorizationEventEntityResultDTO'
        serverWorkload:
          $ref: '#/components/schemas/AuthorizationEventEntityResultDTO'
        accessPolicy:
          $ref: '#/components/schemas/AuthorizationEventEntityResultDTO'
        trustProviders:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationEventAtttestationResultDTO'
          description: Trust Provider information for an individual Aembit Access Authorization Event
          nullable: true
        accessConditions:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationEventAtttestationResultDTO'
          description: Access Condition information for an individual Aembit Access Authorization Event
          nullable: true
        credentialProvider:
          $ref: '#/components/schemas/AuthorizationEventCPResultDTO'
      additionalProperties: false
      description: An individual Aembit Access Authorization Event
    AuthorizationEventDataMetaDTO:
      type: object
      properties:
        clientIP:
          type: string
          description: Remote Client IP Address of the Access Authorization Request
          nullable: true
        timestamp:
          type: string
          description: Timestamp of the Access Authorization Request
          format: date-time
        eventType:
          type: string
          description: Event Type of the Access Authorization Request
          nullable: true
        eventId:
          type: string
          description: Unique ID of the Access Authorization Event
          format: uuid
        resourceSetId:
          type: string
          description: Resource Set ID of the Access Authorization Event
          format: uuid
        contextId:
          type: string
          description: Context ID of the Access Authorization Events for a single Access Authorization Request
          format: uuid
        directiveId:
          type: string
          description: Directive ID of the Access Authorization Event (if available)
          format: uuid
        severity:
          type: string
          description: 'Severity of the Access Authorization Event (e.g. Info, Warning, Error)'
          nullable: true
      additionalProperties: false
      description: Metadata DTO for an individual Aembit Access Authorization Event
    AuthorizationEventEntityResultDTO:
      type: object
      properties:
        id:
          type: string
          description: Access Entity ID
          format: uuid
        name:
          type: string
          description: Access Entity Name
          nullable: true
        result:
          type: string
          description: Access Entity processing Result for this Access Authorization Event
          nullable: true
        matches:
          type: array
          items:
            type: string
          description: List of matched Access Entity Identifiers
          nullable: true
      additionalProperties: false
      description: Access Entity Result of an Aembit Access Authorization Event
    AuthorizationEventEnvironmentDataDTO:
      type: object
      properties:
        network:
          $ref: '#/components/schemas/RequestMetadaNetworkDTO'
        host:
          $ref: '#/components/schemas/RequestMetadaHostDTO'
        process:
          $ref: '#/components/schemas/RequestMetadaProcessDTO'
        aembit:
          $ref: '#/components/schemas/RequestMetadaAembitDTO'
        aws:
          $ref: '#/components/schemas/RequestMetadaAwsDTO'
        gcp:
          $ref: '#/components/schemas/RequestMetadaGcpDTO'
        azure:
          $ref: '#/components/schemas/RequestMetadaAzureDTO'
        kubernetes:
          $ref: '#/components/schemas/RequestMetadaKubernetesDTO'
        gitlab:
          $ref: '#/components/schemas/RequestMetadaGitlabDTO'
        github:
          $ref: '#/components/schemas/RequestMetadaGithubDTO'
        terraform:
          $ref: '#/components/schemas/RequestMetadaTerraformDTO'
      additionalProperties: false
    AuthorizationEventListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Aembit Audit Logs
          format: int32
        authorizationEvents:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationEventDTO'
          description: Page of Aembit Access Authorization Events
          nullable: true
      additionalProperties: false
      description: Page of Aembit Access Authorization Events
    AuthorizationEventOutcomeDTO:
      type: object
      properties:
        result:
          type: string
          description: Result of an individual Aembit Access Authorization Event
          nullable: true
        reason:
          type: string
          description: Reason for the Result of an individual Aembit Access Authorization Event
          nullable: true
      additionalProperties: false
      description: Outcome of an individual Aembit Access Authorization Event
    CPAwsStsV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - awsIAMRoleArn
          type: object
          properties:
            awsIAMRoleArn:
              minLength: 1
              type: string
              description: Amazon Resource Name(ARN) for AWS IAM Role
            lifetime:
              type: integer
              description: Access token lifetime (in seconds)
              format: int32
              nullable: true
          additionalProperties: false
    CPGitLabManagedAccountDTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - accessLevel
            - lifetimeInSeconds
            - scope
          type: object
          properties:
            groupIds:
              type: string
              description: Comma separated list of GitLab Group Identifiers or Paths
              nullable: true
            projectIds:
              type: string
              description: Comma separated list of GitLab Project Identifiers or Paths
              nullable: true
            accessLevel:
              type: integer
              description: Access level code to use while assigning Managed Service Account to a group or a project
              format: int32
            lifetimeInSeconds:
              type: integer
              description: Lifetime (in seconds) of a Personal Access Token of the Managed Service Account
              format: int32
            scope:
              minLength: 1
              type: string
              description: A space separated list of scopes to be specified when requesting a Personal Access Token of a Managed Service Account
            userId:
              type: integer
              description: GitLab user ID of the Managed Service Account.
              format: int32
              readOnly: true
            username:
              type: string
              description: GitLab username of the Managed Service Account.
              nullable: true
              readOnly: true
            tokenSensitiveDataId:
              type: string
              format: uuid
            tokenId:
              type: string
              nullable: true
            tokenExpiration:
              type: string
              description: Expiration timestamp of the Personal Access Token of the Managed Service Account.
              format: date-time
              nullable: true
              readOnly: true
            lastOperationTimestamp:
              type: string
              description: Timestamp of the latest operation performed with the Personal Access Token of the Managed Service Account.
              format: date-time
              nullable: true
              readOnly: true
            status:
              type: string
              description: Status of the Personal Access Token of the Managed Service Account.
              nullable: true
              readOnly: true
            errorMessage:
              type: string
              description: Contains an error message related to the last unsuccessful operation using the Personal Access Token of the Managed Service Account.
              nullable: true
              readOnly: true
            credentialProviderIntegrationExternalId:
              type: string
              description: ID of the Credential Provider Integration with which this Managed GitLab Account Credential Provider is associated
              format: uuid
          additionalProperties: false
    CPTypeAembitAccessTokenV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - audience
            - lifetimeInSeconds
            - roleId
          type: object
          properties:
            audience:
              minLength: 1
              type: string
              description: Audience for the access token
              format: your_tenant_id.api.aembit.io
            roleId:
              type: string
              description: Aembit Role Id
              format: uuid
            lifetimeInSeconds:
              type: integer
              description: Access token lifetime (in seconds)
              format: int32
          additionalProperties: false
    CPTypeApiKeyUIV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - apiKey
          type: object
          properties:
            apiKey:
              minLength: 1
              type: string
              description: API Key
          additionalProperties: false
    CPTypeAzureEntraFederationV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - audience
            - azureTenant
            - clientId
            - scope
            - subject
          type: object
          properties:
            audience:
              minLength: 1
              type: string
              description: Audience for the access token
            subject:
              minLength: 1
              type: string
              description: Subject for the access token
            scope:
              minLength: 1
              type: string
              description: Scope for the access token
            azureTenant:
              minLength: 1
              type: string
              description: Azure tenant ID
            clientId:
              minLength: 1
              type: string
              description: Azure client ID
          additionalProperties: false
    CPTypeGoogleWorkflowIDFederationV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - audience
            - serviceAccountEmail
          type: object
          properties:
            audience:
              minLength: 1
              type: string
              description: Audience for the access token
            serviceAccountEmail:
              minLength: 1
              type: string
              description: Service account email
              format: email
            lifetime:
              type: integer
              description: Access token lifetime (in seconds)
              format: int32
              nullable: true
          additionalProperties: false
    CPTypeJWTTokenV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - algorithmType
            - issuer
            - lifetime
            - subject
            - tokenConfiguration
          type: object
          properties:
            tokenConfiguration:
              minLength: 1
              type: string
              description: 'Token configuration type. Accepted value: ''snowflake'''
            lifetime:
              type: integer
              description: Access token lifetime (in seconds)
              format: int32
            algorithmType:
              minLength: 1
              type: string
              description: 'Token signing algorithm. Accepted value: ''RS256'''
            issuer:
              minLength: 1
              type: string
              description: Issuer of the access token
              format: 'Snowflake_Account_Name.Snowflake_Username.SHA256:{sha256(publicKey)}'
            subject:
              minLength: 1
              type: string
              description: Subject of the access token
              format: Snowflake_Account_Name.Snowflake_Username
            keyContent:
              type: string
              nullable: true
            privateKey:
              type: string
              nullable: true
          additionalProperties: false
    CPTypeOAuth2AuthorizationCodeUIV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - authorizationUrl
            - clientID
            - oAuthUrl
            - tokenUrl
          type: object
          properties:
            clientID:
              minLength: 1
              type: string
              description: 'OAuth Client ID '
            clientSecret:
              type: string
              description: OAuth Client Secret
              nullable: true
            scope:
              type: string
              description: OAuth Scopes
              nullable: true
            customParameters:
              type: array
              items:
                $ref: '#/components/schemas/CPTypeOAuth2CustomParameters'
              description: Custom Claims that are added to the Access Token
              nullable: true
            oAuthUrl:
              minLength: 1
              type: string
              description: OAuth well-known metadata endpoint
            authorizationUrl:
              minLength: 1
              type: string
              description: OAuth Authorization URL for handling authorization requests
            tokenUrl:
              minLength: 1
              type: string
              description: OAuth Token URL for handling token requests
            isPkceRequired:
              type: boolean
              description: Indicates if Proof Key for Code Exchange (PKCE) protocol flow must be used
            callBackUrl:
              type: string
              description: The callback URL where the Authorization Server sends the Authorization Code
              format: ''
              nullable: true
            userAuthorizationUrl:
              type: string
              description: Authorization URL to be used for authorization of the Credential Provider by a privileged user
              nullable: true
            state:
              type: string
              description: State parameter to maintain state between the authorization request and callback
              nullable: true
          additionalProperties: false
    CPTypeOAuth2ClientCredentialsUIV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - clientID
            - url
          type: object
          properties:
            clientID:
              minLength: 1
              type: string
              description: 'OAuth Client ID '
            clientSecret:
              type: string
              description: OAuth Client Secret
              nullable: true
            scope:
              type: string
              description: OAuth Scopes
              nullable: true
            customParameters:
              type: array
              items:
                $ref: '#/components/schemas/CPTypeOAuth2CustomParameters'
              description: Custom Claims that are added to the Access Token
              nullable: true
            url:
              minLength: 1
              type: string
              description: OAuth Token URL for handling token requests
            credentialStyle:
              type: string
              description: 'Defines how credential would be transmitted. Accepted value: ''postBody'', ''authHeader'''
              nullable: true
          additionalProperties: false
    CPTypeOAuth2CustomParameters:
      type: object
      properties:
        key:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
        valueType:
          type: string
          nullable: true
      additionalProperties: false
    CPTypeUsernamePasswordUIV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - password
            - username
          type: object
          properties:
            username:
              minLength: 1
              type: string
              description: Username
            password:
              minLength: 1
              type: string
              description: Password. Set to null on updates if not wish to change it
          additionalProperties: false
    CPTypeVaultClientTokenV2DTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderV2DTO'
        - required:
            - authenticationPath
            - issuer
            - lifetime
            - port
            - subject
            - vaultHost
          type: object
          properties:
            issuer:
              minLength: 1
              type: string
              description: Issuer of the Access Token
              format: https://your_tenant_id.id.aembit.io
            subject:
              minLength: 1
              type: string
              description: Subject of the Access Token
            subjectType:
              type: string
              description: 'Subject type, Accepted values: ''literal'', ''dynamic'''
              nullable: true
            lifetime:
              type: integer
              description: Access Token(used for authentication against vault OIDC provider) Lifetime in seconds
              format: int32
            customClaimNames:
              type: array
              items:
                $ref: '#/components/schemas/JWTClaimDTO'
              description: Custom Claims that are added to the Access Token
              nullable: true
            vaultHost:
              minLength: 1
              type: string
              description: Vault host
            tls:
              type: boolean
              description: Tls enabled/disabled when connecting to the vault instance
            port:
              maximum: 65535
              minimum: 1
              type: integer
              description: Port number for connecting to the vault instance
              format: int32
            authenticationPath:
              minLength: 1
              type: string
              description: Vault authentication path
            namespace:
              type: string
              description: Namespace to be used when connecting to the vault instance
              nullable: true
            role:
              type: string
              description: User role to be used when connecting to the vault instance
              nullable: true
            forwardingConfig:
              type: string
              description: 'Forwarding configuration for the vault request. Accepted values: '''', ''conditional'', ''unconditional'''
              nullable: true
            privateNetworkAccess:
              type: boolean
              description: Specifies whether the Vault instance is accessible over a private network
          additionalProperties: false
    ClientRequestDTO:
      required:
        - network
        - version
      type: object
      properties:
        version:
          minLength: 1
          type: string
        network:
          $ref: '#/components/schemas/NetworkDTO'
      additionalProperties: false
    ClientWorkloadExternalDTO:
      required:
        - isActive
        - name
        - resourceSet
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        identities:
          type: array
          items:
            $ref: '#/components/schemas/ClientWorkloadIdentityDTO'
          nullable: true
        standaloneCertificateAuthority:
          type: string
          description: Standalone Certificate Authority associated with this Client Workload
          format: uuid
          nullable: true
        type:
          type: string
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Client Workload
          format: int32
      additionalProperties: false
    ClientWorkloadIdentityDTO:
      required:
        - value
      type: object
      properties:
        type:
          maxLength: 255
          type: string
          nullable: true
        value:
          maxLength: 255
          minLength: 1
          type: string
      additionalProperties: false
    ClientWorkloadListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          format: int32
        recordsTotal:
          type: integer
          format: int32
        clientWorkloads:
          type: array
          items:
            $ref: '#/components/schemas/ClientWorkloadExternalDTO'
          nullable: true
      additionalProperties: false
      description: Page of Client Workloads
    ClientWorkloadPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
        identities:
          type: array
          items:
            $ref: '#/components/schemas/ClientWorkloadIdentityDTO'
          nullable: true
      additionalProperties: false
    CreatePolicyDTO:
      required:
        - clientWorkload
        - isActive
        - name
        - resourceSet
        - serverWorkload
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        credentialProviders:
          type: array
          items:
            $ref: '#/components/schemas/PolicyCredentialMappingDTO'
          description: Credential Providers associated with this Access Policy
          nullable: true
        trustProviders:
          type: array
          items:
            type: string
            format: uuid
          description: Trust Providers associated with this Access Policy
          nullable: true
        accessConditions:
          type: array
          items:
            type: string
            format: uuid
          description: Access Conditions associated with this Access Policy
          nullable: true
        clientWorkload:
          type: string
          description: Client Workload associated with this Access Policy
          format: uuid
        serverWorkload:
          type: string
          description: Server Workload associated with this Access Policy
          format: uuid
      additionalProperties: false
      description: Create/Update Access Policy
    CredentialProviderDTO:
      required:
        - isActive
        - name
        - resourceSet
        - type
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        type:
          minLength: 1
          type: string
          description: 'Credential Provider Type (e.g. oauth-client-credential, username-password, etc.)'
        roleId:
          type: string
          description: Credential Provider Role for use with Aembit Access Token type Credential Providers
          format: uuid
          nullable: true
        lifetimeTimeSpanSeconds:
          type: integer
          description: The Lifetime of a Credential Provider's credential value
          format: int32
        lifetimeExpiration:
          type: string
          description: The expiration timestamp for a Credential Provider's credential value
          format: date-time
          nullable: true
        providerDetailJSON:
          type: string
          description: JSON representation of the Credential Provider configuration details
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Credential Provider
          format: int32
      additionalProperties: false
      description: Individual Credential Provider
    CredentialProviderIntegrationDTO:
      required:
        - isActive
        - name
        - resourceSet
        - type
      type: object
      properties:
        type:
          $ref: '#/components/schemas/CredentialProviderIntegrationType'
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        tokenExpiration:
          type: string
          format: date-time
          nullable: true
        lastOperationTimestamp:
          type: string
          format: date-time
          nullable: true
        status:
          type: string
          nullable: true
        errorMessage:
          type: string
          nullable: true
      additionalProperties: false
      description: Individual Credential Provider Integration
      discriminator:
        propertyName: type
        mapping:
          GitLab: '#/components/schemas/GitLabCredentialProviderIntegrationDTO'
    CredentialProviderIntegrationPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch Request for an individual Credential Provider Integration
    CredentialProviderIntegrationType:
      enum:
        - GitLab
      type: string
    CredentialProviderPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
        providerDetailJSON:
          type: string
          description: JSON representation of the Credential Provider configuration details
          nullable: true
        type:
          type: string
          description: 'Credential Provider Type (e.g. oauth-client-credential, username-password, etc.)'
          nullable: true
      additionalProperties: false
      description: Patch request for an individual Credential Provider
    CredentialProviderUIDTO:
      required:
        - isActive
        - name
        - resourceSet
        - type
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        type:
          minLength: 1
          type: string
          description: 'Credential Provider Type (e.g. oauth-client-credential, username-password, etc.)'
        roleId:
          type: string
          description: Credential Provider Role for use with Aembit Access Token type Credential Providers
          format: uuid
          nullable: true
        lifetimeTimeSpanSeconds:
          type: integer
          description: The Lifetime of a Credential Provider's credential value
          format: int32
        lifetimeExpiration:
          type: string
          description: The expiration timestamp for a Credential Provider's credential value
          format: date-time
          nullable: true
        providerDetailJSON:
          type: string
          description: JSON representation of the Credential Provider configuration details
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Credential Provider
          format: int32
      additionalProperties: false
      description: Individual Credential Provider
    CredentialProviderUIDTOCredentialProviderListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Credential Providers
          format: int32
        credentialProviders:
          type: array
          items:
            $ref: '#/components/schemas/CredentialProviderUIDTO'
          description: Page of Credential Providers
          nullable: true
      additionalProperties: false
      description: Page of Credential Providers
    CredentialProviderV2DTO:
      required:
        - isActive
        - name
        - resourceSet
        - type
      type: object
      properties:
        type:
          minLength: 1
          type: string
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        lifetimeTimeSpanSeconds:
          type: integer
          format: int32
        lifetimeExpiration:
          type: string
          format: date-time
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Credential Provider
          format: int32
      additionalProperties: false
      discriminator:
        propertyName: type
        mapping:
          aembit-access-token: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
          apikey: '#/components/schemas/CPTypeApiKeyUIV2DTO'
          aws-sts-oidc: '#/components/schemas/CPAwsStsV2DTO'
          azure-entra-federation: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
          gcp-identity-federation: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
          gitlab-managed-account: '#/components/schemas/CPGitLabManagedAccountDTO'
          oauth-authorization-code: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
          oauth-client-credential: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
          signed-jwt: '#/components/schemas/CPTypeJWTTokenV2DTO'
          username-password: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
          vaultClientToken: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
    CredentialProviderV2DTOCredentialProviderListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Credential Providers
          format: int32
        credentialProviders:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/CredentialProviderV2DTO'
              - $ref: '#/components/schemas/CPTypeAembitAccessTokenV2DTO'
              - $ref: '#/components/schemas/CPTypeApiKeyUIV2DTO'
              - $ref: '#/components/schemas/CPAwsStsV2DTO'
              - $ref: '#/components/schemas/CPTypeAzureEntraFederationV2DTO'
              - $ref: '#/components/schemas/CPTypeGoogleWorkflowIDFederationV2DTO'
              - $ref: '#/components/schemas/CPGitLabManagedAccountDTO'
              - $ref: '#/components/schemas/CPTypeOAuth2AuthorizationCodeUIV2DTO'
              - $ref: '#/components/schemas/CPTypeOAuth2ClientCredentialsUIV2DTO'
              - $ref: '#/components/schemas/CPTypeJWTTokenV2DTO'
              - $ref: '#/components/schemas/CPTypeUsernamePasswordUIV2DTO'
              - $ref: '#/components/schemas/CPTypeVaultClientTokenV2DTO'
          description: Page of Credential Providers
          nullable: true
      additionalProperties: false
      description: Page of Credential Providers
    DiscoveryIntegrationDTO:
      required:
        - discoveryIntegrationJSON
        - endpoint
        - isActive
        - name
        - resourceSet
        - syncFrequencySeconds
        - type
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        type:
          minLength: 1
          type: string
        syncFrequencySeconds:
          maximum: 3600
          minimum: 300
          type: integer
          format: int32
        lastSync:
          type: string
          format: date-time
          nullable: true
        lastSyncStatus:
          type: string
          nullable: true
        endpoint:
          minLength: 1
          type: string
        discoveryIntegrationJSON:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonNode'
      additionalProperties: false
      description: Integration details for 3rd party data used by Discovery
    DiscoveryIntegrationListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Integrations
          format: int32
        integrations:
          type: array
          items:
            $ref: '#/components/schemas/DiscoveryIntegrationDTO'
          description: Page of Integrations
          nullable: true
      additionalProperties: false
      description: Page of Integrations
    DiscoveryIntegrationPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch request for an individual Integration
    EntityMetaDTO:
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
      additionalProperties: false
    EntityPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
    EventDTO:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/EventMetaDTO'
        network:
          $ref: '#/components/schemas/EventNetworkDTO'
        outcome:
          $ref: '#/components/schemas/EventOutcomeDTO'
      additionalProperties: { }
    EventListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          format: int32
        recordsTotal:
          type: integer
          format: int32
        workloadEvents:
          type: array
          items:
            $ref: '#/components/schemas/EventDTO'
          nullable: true
      additionalProperties: false
    EventMetaDTO:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        eventType:
          type: string
          nullable: true
        eventId:
          type: string
          nullable: true
        resourceSetId:
          type: string
          format: uuid
        policyId:
          type: string
          nullable: true
        action:
          type: string
          nullable: true
        connectionId:
          type: string
          nullable: true
        severity:
          type: string
          nullable: true
      additionalProperties: { }
    EventNetworkDTO:
      type: object
      properties:
        clientWorkloadIP:
          type: string
          nullable: true
        clientWorkloadPort:
          type: integer
          format: int32
        serverWorkloadIP:
          type: string
          nullable: true
        serverWorkloadPort:
          type: integer
          format: int32
          nullable: true
        proxyPort:
          type: integer
          format: int32
          nullable: true
      additionalProperties: { }
    EventOutcomeDTO:
      type: object
      properties:
        result:
          type: string
          nullable: true
      additionalProperties: { }
    EventResultDTO:
      type: object
      properties:
        reason:
          type: string
          nullable: true
        attribute:
          type: string
          nullable: true
        expectedValue:
          type: string
          nullable: true
        actualValue:
          type: string
          nullable: true
      additionalProperties: false
    GenericResponseDTO:
      type: object
      properties:
        success:
          type: boolean
          description: 'True if the API call was successful, False otherwise'
        message:
          type: string
          description: Message to indicate why the API call failed
          nullable: true
        id:
          type: integer
          description: Unique identifier of the API response
          format: int32
      additionalProperties: false
      description: DTO for a Generic API Response
    GetPolicyDTO:
      required:
        - isActive
        - name
        - resourceSet
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        clientWorkload:
          $ref: '#/components/schemas/EntityMetaDTO'
        serverWorkload:
          $ref: '#/components/schemas/EntityMetaDTO'
        trustProviders:
          type: array
          items:
            $ref: '#/components/schemas/EntityMetaDTO'
          description: Trust Providers associated with this Access Policy
          nullable: true
        credentialProviders:
          type: array
          items:
            $ref: '#/components/schemas/EntityMetaDTO'
          description: Credential Providers associated with this Access Policy
          nullable: true
        accessConditions:
          type: array
          items:
            $ref: '#/components/schemas/EntityMetaDTO'
          description: Access Conditions associated with this Access Policy
          nullable: true
      additionalProperties: false
      description: Individual Access Policy
    GetPolicyDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/GetPolicyDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    GetSignInPolicyDTO:
      type: object
      properties:
        ssoRequired:
          type: boolean
        mfaRequired:
          type: boolean
      additionalProperties: false
    GitLabCredentialProviderIntegrationDTO:
      allOf:
        - $ref: '#/components/schemas/CredentialProviderIntegrationDTO'
        - required:
            - url
          type: object
          properties:
            url:
              minLength: 1
              type: string
            userId:
              type: string
              nullable: true
            topLevelGroupId:
              type: string
              nullable: true
            personalAccessToken:
              type: string
              nullable: true
          additionalProperties: false
      description: Individual Credential Provider Integration
    HealthDTO:
      type: object
      properties:
        status:
          type: string
          description: Aembit Health Status
          nullable: true
        version:
          type: string
          description: Aembit Cloud Version
          nullable: true
        gitSHA:
          type: string
          description: Aembit Cloud Version Git SHA
          nullable: true
        host:
          type: string
          description: Aembit Cloud Requested Hostname
          nullable: true
        user:
          type: string
          description: Aembit Cloud Authenticated User Email
          nullable: true
        userFullName:
          type: string
          description: Aembit Cloud Authenticated User Full Name
          nullable: true
        tenant:
          type: string
          description: Aembit Cloud Tenant ID
          nullable: true
        sessionExpiresAt:
          type: string
          description: Aembit Cloud Session Expiration
          nullable: true
      additionalProperties: false
      description: Aembit Health Status
    IntegrationDTO:
      required:
        - endpoint
        - integrationJSON
        - isActive
        - name
        - resourceSet
        - syncFrequencySeconds
        - type
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        type:
          minLength: 1
          type: string
        syncFrequencySeconds:
          maximum: 3600
          minimum: 300
          type: integer
          format: int32
        lastSync:
          type: string
          format: date-time
          nullable: true
        lastSyncStatus:
          type: string
          nullable: true
        endpoint:
          minLength: 1
          type: string
        integrationJSON:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonNode'
        accessConditionsCount:
          type: integer
          format: int32
      additionalProperties: false
      description: Integration details for 3rd party data used by Access Conditions
    IntegrationListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Integrations
          format: int32
        integrations:
          type: array
          items:
            $ref: '#/components/schemas/IntegrationDTO'
          description: Page of Integrations
          nullable: true
      additionalProperties: false
      description: Page of Integrations
    IntegrationPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch request for an individual Integration
    JWTClaimDTO:
      type: object
      properties:
        key:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
        valueType:
          type: string
          nullable: true
      additionalProperties: false
    JsonNode:
      type: object
      properties:
        options:
          $ref: '#/components/schemas/JsonNodeOptions'
        parent:
          $ref: '#/components/schemas/JsonNode'
        root:
          $ref: '#/components/schemas/JsonNode'
      additionalProperties: false
    JsonNodeOptions:
      type: object
      properties:
        propertyNameCaseInsensitive:
          type: boolean
      additionalProperties: false
    ListCredentialProviderIntegrationDTO:
      required:
        - isActive
        - name
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/CredentialProviderIntegrationType'
        status:
          type: string
          nullable: true
        lastOperationTimestamp:
          type: string
          format: date-time
          nullable: true
      additionalProperties: false
      description: Page of Credential Provider Integrations
    ListCredentialProviderIntegrationDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/ListCredentialProviderIntegrationDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    LogStreamDTO:
      required:
        - dataType
        - isActive
        - name
        - type
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        dataType:
          minLength: 1
          type: string
          description: 'Log Stream Data Type (e.g. AuditLogs, etc.)'
        type:
          $ref: '#/components/schemas/LogStreamDestinationType'
      additionalProperties: false
      description: Individual Log Stream
    LogStreamDestinationType:
      enum:
        - AwsS3Bucket
        - GcsBucket
      type: string
    LogStreamListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Log Streams
          format: int32
        logStreams:
          type: array
          items:
            $ref: '#/components/schemas/LogStreamDTO'
          description: Page of Log Streams
          nullable: true
      additionalProperties: false
      description: Page of Log Streams
    LogStreamPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch Request for an individual of Log Stream
    MFASignInPolicyDTO:
      type: object
      properties:
        mfaRequired:
          type: boolean
      additionalProperties: false
    NetworkDTO:
      required:
        - proxyPort
        - sourceIP
        - sourcePort
        - transportProtocol
      type: object
      properties:
        sourceIP:
          minLength: 1
          type: string
        sourcePort:
          type: integer
          format: int32
        transportProtocol:
          minLength: 1
          type: string
        proxyPort:
          type: integer
          format: int32
        targetHost:
          type: string
          nullable: true
        targetPort:
          type: integer
          format: int32
      additionalProperties: false
    PatchPolicyV2DTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
        clientWorkload:
          type: string
          description: Client Workload associated with this Access Policy
          format: uuid
        serverWorkload:
          type: string
          description: Server Workload associated with this Access Policy
          format: uuid
        credentialProviders:
          type: array
          items:
            $ref: '#/components/schemas/PolicyCredentialMappingDTO'
          description: Credential Providers associated with this Access Policy
          nullable: true
        trustProviders:
          type: array
          items:
            type: string
            format: uuid
          description: Trust Providers associated with this Access Policy
          nullable: true
        accessConditions:
          type: array
          items:
            type: string
            format: uuid
          description: Access Conditions associated with this Access Policy
          nullable: true
      additionalProperties: false
      description: Patch request for an Access Policy
    PermissionDTO:
      type: object
      properties:
        name:
          type: string
          description: Name of the Permission Target
          nullable: true
        read:
          type: boolean
          description: 'True if this permission allows access to Read the Permission Target, False otherwise'
        write:
          type: boolean
          description: 'True if this permission allows access to Write the Permission Target, False otherwise'
        isWritable:
          type: boolean
          description: 'True if this permission allows access to Write the Permission Target, False otherwise'
        isReadable:
          type: boolean
          description: 'True if this permission allows access to Read the Permission Target, False otherwise'
        accessLevel:
          type: string
          description: Description of the Permission level
          nullable: true
          readOnly: true
      additionalProperties: false
      description: Individual Permission details
    PolicyCredentialMappingDTO:
      required:
        - credentialProviderId
        - mappingType
      type: object
      properties:
        credentialProviderId:
          type: string
          description: CredentialProviderId
          format: uuid
        mappingType:
          $ref: '#/components/schemas/PolicyCredentialProviderMappingTypes'
        accountName:
          maxLength: 256
          pattern: '^[\p{L}a-zA-Z0-9][\p{L}a-zA-Z0-9._-]*$'
          type: string
          description: Snowflake Username
          nullable: true
        headerName:
          maxLength: 256
          pattern: '^[\p{L}a-zA-Z0-9][\p{L}a-zA-Z0-9._-]*$'
          type: string
          description: Header Name
          nullable: true
        headerValue:
          maxLength: 256
          pattern: '^[\p{L}a-zA-Z0-9][\p{L}a-zA-Z0-9._-]*$'
          type: string
          description: Header Value
          nullable: true
        httpbodyFieldPath:
          maxLength: 256
          pattern: '^[\p{L}a-zA-Z0-9][\p{L}a-zA-Z0-9._-]*$'
          type: string
          description: HttpBody Field Path
          nullable: true
        httpbodyFieldValue:
          maxLength: 256
          pattern: '^[\p{L}a-zA-Z0-9][\p{L}a-zA-Z0-9._-]*$'
          type: string
          description: HttpBody Field Value
          nullable: true
      additionalProperties: false
      description: Access Policy Credential Mappings
    PolicyCredentialProviderMappingTypes:
      enum:
        - None
        - AccountName
        - HttpHeader
        - HttpBody
      type: string
    PolicyDTO:
      required:
        - clientWorkload
        - isActive
        - name
        - resourceSet
        - serverWorkload
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        credentialProvider:
          type: string
          description: Credential Provider associated with this Access Policy
          format: uuid
          nullable: true
        trustProviders:
          type: array
          items:
            type: string
            format: uuid
          description: Trust Providers associated with this Access Policy
          nullable: true
        accessConditions:
          type: array
          items:
            type: string
            format: uuid
          description: Access Conditions associated with this Access Policy
          nullable: true
        clientWorkload:
          type: string
          description: Client Workload associated with this Access Policy
          format: uuid
        serverWorkload:
          type: string
          description: Server Workload associated with this Access Policy
          format: uuid
        clientWorkloadDetails:
          $ref: '#/components/schemas/WorkloadExternalDTO'
        serverWorkloadDetails:
          $ref: '#/components/schemas/WorkloadExternalDTO'
        policyNotes:
          type: array
          items:
            $ref: '#/components/schemas/PolicyNoteDTO'
          description: Policy Notes for this Access Policy
          nullable: true
      additionalProperties: false
      description: Individual Access Policy
    PolicyExternalDTO:
      required:
        - isActive
        - name
        - resourceSet
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        clientWorkload:
          $ref: '#/components/schemas/ClientWorkloadExternalDTO'
        trustProviders:
          type: array
          items:
            $ref: '#/components/schemas/TrustProviderDTO'
          description: Details of the Trust Providers associated with this Access Policy
          nullable: true
        accessConditions:
          type: array
          items:
            $ref: '#/components/schemas/AccessConditionDTO'
          description: Details of the Access Conditions associated with this Access Policy
          nullable: true
        credentialProvider:
          $ref: '#/components/schemas/CredentialProviderDTO'
        serverWorkload:
          $ref: '#/components/schemas/ServerWorkloadExternalDTO'
        policyNotes:
          type: array
          items:
            $ref: '#/components/schemas/PolicyNoteDTO'
          description: Policy Notes for this Access Policy
          nullable: true
      additionalProperties: false
      description: Individual Access Policy
    PolicyListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Access Policies
          format: int32
        accessPolicies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyExternalDTO'
          description: Page of Access Policies
          nullable: true
      additionalProperties: false
      description: Page of Access Policies
    PolicyNoteDTO:
      required:
        - note
      type: object
      properties:
        note:
          maxLength: 1024
          minLength: 1
          type: string
          description: Note added to an Access Policy by a User
        createdAt:
          type: string
          description: Timestamp the Note was created
          format: date-time
        createdBy:
          type: string
          description: Email address of the User who created the Access Policy Note
          nullable: true
      additionalProperties: false
      description: Individual Note created for an Access Policy
    PolicyNoteDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/PolicyNoteDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    PolicyPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
        clientWorkload:
          type: string
          description: Client Workload associated with this Access Policy
          format: uuid
        serverWorkload:
          type: string
          description: Server Workload associated with this Access Policy
          format: uuid
        credentialProvider:
          type: string
          description: Credential Provider associated with this Access Policy
          format: uuid
          nullable: true
        trustProviders:
          type: array
          items:
            type: string
            format: uuid
          description: Trust Providers associated with this Access Policy
          nullable: true
        accessConditions:
          type: array
          items:
            type: string
            format: uuid
          description: Access Conditions associated with this Access Policy
          nullable: true
      additionalProperties: false
      description: Patch request for an Access Policy
    PublicKeyValidationDTO:
      type: object
      properties:
        isValidContent:
          type: boolean
          description: 'True if the Public Key was valid, False otherwise'
        thumbprint:
          type: string
          description: Thumbprint of the Public Key
          nullable: true
        expirationDate:
          type: string
          description: Expiration of the Public Key Certificate
          nullable: true
        certificateSubject:
          type: string
          description: Subject of the Public Key Certificate
          nullable: true
        message:
          type: string
          description: Message describing why the Public Key was not valid if IsValidContent is False
          nullable: true
      additionalProperties: false
      description: Response to a request for Public Key Validation
    RequestMetadaAembitDTO:
      type: object
      properties:
        clientId:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaAwsDTO:
      type: object
      properties:
        accountId:
          type: string
          nullable: true
        instanceId:
          type: string
          nullable: true
        ecs:
          $ref: '#/components/schemas/RequestMetadaEcsDTO'
        lambda:
          $ref: '#/components/schemas/RequestMetadaLambdaDTO'
      additionalProperties: false
    RequestMetadaAzureDTO:
      type: object
      properties:
        vmId:
          type: string
          nullable: true
        subscriptionId:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaEcsDTO:
      type: object
      properties:
        taskFamily:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaGcpDTO:
      type: object
      properties:
        serviceAccount:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaGithubDTO:
      type: object
      properties:
        repository:
          type: string
          nullable: true
        subject:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaGitlabDTO:
      type: object
      properties:
        namespacePath:
          type: string
          nullable: true
        projectPath:
          type: string
          nullable: true
        refPath:
          type: string
          nullable: true
        subject:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaHostDTO:
      type: object
      properties:
        hostname:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaKubernetesDTO:
      type: object
      properties:
        namespace:
          type: string
          nullable: true
        podName:
          type: string
          nullable: true
        serviceAccountName:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaLambdaDTO:
      type: object
      properties:
        arn:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaNetworkDTO:
      type: object
      properties:
        sourceIP:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaProcessDTO:
      type: object
      properties:
        name:
          type: string
          nullable: true
        userName:
          type: string
          nullable: true
      additionalProperties: false
    RequestMetadaTerraformDTO:
      type: object
      properties:
        workspaceId:
          type: string
          nullable: true
      additionalProperties: false
    ResourceSetDTO:
      required:
        - isActive
        - name
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        serverWorkloadCount:
          type: integer
          description: Server Workloads associated with this Resource Set
          format: int32
          nullable: true
        clientWorkloadCount:
          type: integer
          description: Client Workloads associated with this Resource Set
          format: int32
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Resource Set
          format: int32
          nullable: true
        trustProviderCount:
          type: integer
          description: Trust Providers associated with this Resource Set
          format: int32
          nullable: true
        accessConditionCount:
          type: integer
          description: Access Conditions associated with this Resource Set
          format: int32
          nullable: true
        credentialProviderCount:
          type: integer
          description: Credential Providers associated with this Resource Set
          format: int32
          nullable: true
        roles:
          type: array
          items:
            type: string
            format: uuid
          description: Roles associated with this Resource Set
          nullable: true
        rolesDetails:
          type: array
          items:
            $ref: '#/components/schemas/RoleDTO'
          description: Details of the Roles associated with this Resource Set
          nullable: true
        users:
          type: array
          items:
            type: string
          description: Users associated with this Resource Set
          nullable: true
        standaloneCertificateAuthority:
          type: string
          description: Standalone Certificate Authority associated with this Resource Set
          format: uuid
          nullable: true
      additionalProperties: false
      description: Individual Resource Set
    ResourceSetDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/ResourceSetDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    ResourceSetPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch Request for an Individual Resource Set
    RoleDTO:
      required:
        - isActive
        - name
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        usersCount:
          type: integer
          description: Number of Users associated with this Role
          format: int32
        credentialProvidersCount:
          type: integer
          description: Number of Credential Providers associated with this Role
          format: int32
        isSystem:
          type: boolean
          description: True if this is a system included Role (e.g. SuperAdmin or Auditor)
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/PermissionDTO'
          description: Permissions assigned to this Role
          nullable: true
        resourceSets:
          type: array
          items:
            $ref: '#/components/schemas/ResourceSetDTO'
          description: Resource Sets assigned to this Role
          nullable: true
      additionalProperties: false
      description: Individual Role
    RoleListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Roles
          format: int32
        roles:
          type: array
          items:
            $ref: '#/components/schemas/RoleDTO'
          description: Page of Roles
          nullable: true
      additionalProperties: false
      description: Page of Roles
    RolePatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch request for an individual Role
    RoutingDTO:
      required:
        - isActive
        - name
        - proxyUrl
        - resourceSetId
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSetId:
          type: string
          description: ID of the Resource Set related to routing
          format: uuid
        proxyUrl:
          maxLength: 255
          minLength: 1
          type: string
          description: URL of the proxy. The format is http(s)://server:port
      additionalProperties: false
      description: Individual Routing
    RoutingDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/RoutingDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    RoutingPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch request for an individual Routing
    SSOIdentityProviderDTO:
      required:
        - isActive
        - name
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        entityId:
          type: string
          description: SAML Entity ID of the remote SSO Identity Provider
          nullable: true
        metadataUrl:
          pattern: https://.*
          type: string
          description: Metadata URL of the remote SSO Identity Provider
          nullable: true
        metadataXml:
          type: string
          description: Metadata XML content of the remote SSO Identity Provider
          nullable: true
        samlStatementRoleMappings:
          type: array
          items:
            $ref: '#/components/schemas/SamlStatementRoleMappingDTO'
          description: Collection of mappings of SAML attributes to Aembit roles
          nullable: true
      additionalProperties: false
      description: Individual SSO Identity Provider
    SSOIdentityProviderDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/SSOIdentityProviderDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    SSOIdentityProviderPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
      additionalProperties: false
      description: Patch request for an individual SSO Identity Provider
    SSOSignInPolicyDTO:
      type: object
      properties:
        ssoRequired:
          type: boolean
      additionalProperties: false
    SamlStatementRoleMappingDTO:
      type: object
      properties:
        attributeName:
          type: string
          description: SAML Attribute name
          nullable: true
        attributeValue:
          type: string
          description: SAML Attribute value
          nullable: true
        roleExternalId:
          type: string
          description: Aembit Role ID
          format: uuid
      additionalProperties: false
      description: Represents a mapping of a SAML attribute to an Aembit role
    ServerWorkloadExternalDTO:
      required:
        - isActive
        - name
        - resourceSet
        - serviceEndpoint
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        serviceEndpoint:
          $ref: '#/components/schemas/WorkloadServiceEndpointDTO'
        type:
          type: string
          description: Type of Server Workload
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Server Workload
          format: int32
      additionalProperties: false
      description: Individual Server Workload
    ServerWorkloadListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          format: int32
        recordsTotal:
          type: integer
          format: int32
        serverWorkloads:
          type: array
          items:
            $ref: '#/components/schemas/ServerWorkloadExternalDTO'
          nullable: true
      additionalProperties: false
      description: Page of Server Workloads
    StandaloneCertificatePatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
        leafLifetime:
          type: integer
          format: int32
          nullable: true
      additionalProperties: false
      description: Patch Request for an Individual Standalone Certificate Authority
    StandaloneCertificateRequestDTO:
      required:
        - isActive
        - leafLifetime
        - name
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        leafLifetime:
          type: integer
          description: Leaf certificate lifetime value for this Standalone Certificate Authority
          format: int32
      additionalProperties: false
      description: Individual Standalone Certificate Authority
    StandaloneCertificateResponseDTO:
      required:
        - isActive
        - leafLifetime
        - name
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        leafLifetime:
          type: integer
          description: Leaf certificate lifetime value for this Standalone Certificate Authority
          format: int32
        notBefore:
          type: string
          description: 'Not before value of the Root CA for this Standalone Certificate Authority '
          format: date-time
        notAfter:
          type: string
          description: Not after value of the Root CA for this Standalone Certificate Authority
          format: date-time
        clientWorkloadCount:
          type: integer
          description: Client Workloads associated with this Standalone Certificate Authority
          format: int32
          nullable: true
      additionalProperties: false
      description: Individual Standalone Certificate Authority
    StandaloneCertificateResponseDTOListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Current page number of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP StatusCode for the current result
          format: int32
        recordsTotal:
          type: integer
          description: Total number of entities available
          format: int32
        entities:
          type: array
          items:
            $ref: '#/components/schemas/StandaloneCertificateResponseDTO'
          description: Page of entities for this request
          nullable: true
      additionalProperties: false
    StringStringKeyValuePair:
      type: object
      properties:
        key:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
      additionalProperties: false
    TagDTO:
      required:
        - key
        - value
      type: object
      properties:
        key:
          minLength: 1
          type: string
          description: Tag Key
        value:
          minLength: 1
          type: string
          description: Tag Key Value
      additionalProperties: false
      description: Aembit Entity Tag Details
    TrustProviderDTO:
      required:
        - isActive
        - name
        - provider
        - resourceSet
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        id:
          type: integer
          description: Trust Provider Id
          format: int32
        provider:
          minLength: 1
          type: string
          description: Trust Provider Type
        matchRules:
          type: array
          items:
            $ref: '#/components/schemas/TrustProviderMatchRuleDTO'
          description: Trust Provider Match Rules
          nullable: true
        certificate:
          type: string
          description: Trust Provider Certificate or Public Key for cryptographic attestation
          nullable: true
        publicKeyValidation:
          $ref: '#/components/schemas/PublicKeyValidationDTO'
        oidcUrl:
          type: string
          description: OIDC URL to use for retrieving JWKS Public Keys
          nullable: true
        pemType:
          type: string
          description: PEM Input Type
          nullable: true
        accessPolicyCount:
          type: integer
          description: Access Policies associated with this Trust Provider
          format: int32
        agentControllersCount:
          type: integer
          description: Agent Controllers associated with this Trust Provider
          format: int32
        agentControllerIds:
          type: array
          items:
            type: string
            format: uuid
          description: Agent Controller IDs associated with this Trust Provider
          nullable: true
      additionalProperties: false
      description: Individual Trust Provider
    TrustProviderItemDTO:
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
      additionalProperties: false
    TrustProviderListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          description: HTTP Status Code of the response
          format: int32
        recordsTotal:
          type: integer
          description: Total number of Trust Providers
          format: int32
        trustProviders:
          type: array
          items:
            $ref: '#/components/schemas/TrustProviderDTO'
          description: Page of Trust Providers
          nullable: true
      additionalProperties: false
      description: Page of Trust Providers
    TrustProviderMatchRuleDTO:
      required:
        - attribute
        - value
      type: object
      properties:
        attribute:
          minLength: 1
          type: string
          description: Match Rule Attribute
        value:
          minLength: 1
          type: string
          description: Match Rule Attribute Value
      additionalProperties: false
      description: Individual Match Rule to enforce during Trust Provider attestation
    TrustProviderPatchDTO:
      type: object
      properties:
        name:
          maxLength: 128
          type: string
          description: New Name for the identified entity
          nullable: true
        description:
          type: string
          description: New Description for the identified entity
          nullable: true
        isActive:
          type: boolean
          description: New Status for the identified entity
          format: boolean
          nullable: true
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          description: New Tags for the identified entity
          nullable: true
        provider:
          type: string
          description: Trust Provider Type
          nullable: true
        matchRules:
          type: array
          items:
            $ref: '#/components/schemas/TrustProviderMatchRuleDTO'
          description: Trust Provider Match Rules
          nullable: true
        oidcUrl:
          type: string
          description: OIDC URL to use for retrieving JWKS Public Keys
          nullable: true
        pemType:
          type: string
          description: PEM Input Type
          nullable: true
        certificate:
          type: string
          description: Trust Provider Certificate or Public Key for cryptographic attestation
          nullable: true
        publicKeyValidation:
          $ref: '#/components/schemas/PublicKeyValidationDTO'
      additionalProperties: false
      description: Patch request for an individual Trust Provider
    UserAgentDTO:
      type: object
      properties:
        browser:
          type: string
          description: The browser as determined from the HTTP User Agent
          nullable: true
        operatingSystem:
          type: string
          description: The operating system as determined from the HTTP User Agent
          nullable: true
        raw:
          type: string
          description: The raw HTTP User Agent
          nullable: true
      additionalProperties: false
      description: DTO for the HTTP User Agent of an individual Aembit Audit Log
    UserDTO:
      required:
        - email
        - firstName
        - lastName
      type: object
      properties:
        email:
          minLength: 1
          type: string
          format: email
        externalId:
          type: string
          format: uuid
        roles:
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        rolesDetails:
          type: array
          items:
            $ref: '#/components/schemas/RoleDTO'
          nullable: true
        firstName:
          maxLength: 64
          minLength: 2
          type: string
        lastName:
          maxLength: 64
          minLength: 2
          type: string
        phoneNumber:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
        isActive:
          type: boolean
        twoFactorEnabled:
          type: boolean
        isLocked:
          type: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        userTokens:
          type: array
          items:
            $ref: '#/components/schemas/UserTokensDTO'
          nullable: true
      additionalProperties: false
    UserListDTO:
      type: object
      properties:
        page:
          type: integer
          description: Page of entities
          format: int32
        perPage:
          type: integer
          description: Number of entities requested for the current page
          format: int32
        order:
          type: string
          description: Ordering criteria used for the current page
          nullable: true
        statusCode:
          type: integer
          format: int32
        recordsTotal:
          type: integer
          format: int32
        users:
          type: array
          items:
            $ref: '#/components/schemas/UserDTO'
          nullable: true
      additionalProperties: false
    UserPatchDTO:
      type: object
      properties:
        email:
          type: string
          nullable: true
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        phoneNumber:
          type: string
          nullable: true
        isActive:
          type: boolean
          nullable: true
      additionalProperties: false
    UserTokensDTO:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          nullable: true
        verified:
          type: boolean
        createdAt:
          type: string
          format: date-time
      additionalProperties: false
    WorkloadExternalDTO:
      required:
        - isActive
        - name
        - resourceSet
      type: object
      properties:
        externalId:
          type: string
          format: uuid
        name:
          maxLength: 128
          minLength: 1
          type: string
          description: Name of the Entity
        description:
          type: string
          description: Description of the Entity
          nullable: true
        isActive:
          type: boolean
          description: True/False value that determines if this entity is Active or Disabled
          format: boolean
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagDTO'
          nullable: true
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        modifiedBy:
          type: string
          nullable: true
        resourceSet:
          type: string
          description: ID of the Resource Set in which this Access Entity exists
          format: uuid
        trustProviders:
          type: array
          items:
            $ref: '#/components/schemas/TrustProviderItemDTO'
          nullable: true
        credentialProviderId:
          type: string
          format: uuid
          nullable: true
        credentialProviderText:
          type: string
          nullable: true
        workloadServiceEndpoints:
          maxItems: 1
          type: array
          items:
            type: string
            format: uuid
          nullable: true
        serviceEndpoint:
          $ref: '#/components/schemas/WorkloadServiceEndpointDTO'
        type:
          type: string
          nullable: true
      additionalProperties: false
    WorkloadServiceAuthenticationDTO:
      required:
        - method
        - scheme
      type: object
      properties:
        method:
          minLength: 1
          type: string
          description: Authentication Method
        scheme:
          minLength: 1
          type: string
          description: Authentication Scheme
        config:
          type: string
          description: Authentication Configuration
          nullable: true
      additionalProperties: false
      description: Authentication configuration for a Server Workload
    WorkloadServiceEndpointDTO:
      required:
        - appProtocol
        - host
        - port
        - requestedPort
        - requestedTls
        - tls
        - tlsVerification
        - transportProtocol
      type: object
      properties:
        externalId:
          type: string
          description: External ID of the Service Endpoint
          nullable: true
        id:
          type: integer
          description: ID of the Service Endpoint
          format: int32
        host:
          minLength: 1
          type: string
          description: Hostname or IP Address
        appProtocol:
          minLength: 1
          type: string
          description: Application Protocol
        transportProtocol:
          maxLength: 3
          minLength: 0
          type: string
          description: Transport Protocol (e.g. TCP)
        requestedPort:
          maximum: 65535
          minimum: 1
          type: integer
          description: The target port as specified by the Client Workload
          format: int32
        requestedTls:
          type: boolean
          description: The TLS encryption configuration of the Client Workload
        port:
          maximum: 65535
          minimum: 1
          type: integer
          description: The target port to which the Agent/Proxy will communicate
          format: int32
        tls:
          type: boolean
          description: The TLS encryption configuration which will be used by the Agent/Proxy
        workloadServiceAuthentication:
          $ref: '#/components/schemas/WorkloadServiceAuthenticationDTO'
        tlsVerification:
          minLength: 1
          type: string
          description: TLS Verification configuration for the Agent/Proxy to Server Workload connection
        httpHeaders:
          title: 'KeyValuePair<string, string>'
          type: array
          items:
            $ref: '#/components/schemas/StringStringKeyValuePair'
          description: Static HTTP Headers to include for transmission to the Server Workload
          nullable: true
      additionalProperties: false
      description: Service Endpoint for a Server Workload
  securitySchemes:
    bearerAuth:
      type: http
      description: Authorization header using the Bearer scheme.
      scheme: bearer
      bearerFormat: Reference
security:
  - bearerAuth:
      - readAccess
      - writeAccess
