Pangea Secure Audit Log API

Tamper-proof, cryptographically verifiable audit logging.

OpenAPI Specification

pangea-secure-audit-log-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Pangea Security Services AI Guard Secure Audit Log API
  description: Specification of representative Pangea security service APIs. Pangea exposes each security capability as its own REST service reachable at https://{service}.{csp}.{geo}.pangea.cloud (for example https://redact.aws.us.pangea.cloud). All requests are POST with a JSON body and are authenticated with a Bearer service token (or OAuth 2 access token) in the Authorization header. This document models several representative services - AuthN, Secure Audit Log, Redact, Vault, File Scan, IP Intel, Domain Intel, and AI Guard - and is not exhaustive of every endpoint or field.
  termsOfService: https://pangea.cloud/legal/terms-of-service/
  contact:
    name: Pangea Support
    url: https://pangea.cloud/contact/
  version: '1.0'
servers:
- url: https://{service}.{csp}.{geo}.pangea.cloud
  description: Per-service Pangea host. Each service is reached at its own subdomain.
  variables:
    service:
      default: redact
      description: Service name (authn, audit, redact, vault, file-scan, ip-intel, domain-intel, ai-guard).
    csp:
      default: aws
      description: Cloud service provider hosting the service.
    geo:
      default: us
      description: Geographic region (us, eu).
security:
- bearerAuth: []
tags:
- name: Secure Audit Log
  description: Tamper-proof, cryptographically verifiable audit logging.
paths:
  /v1/log:
    servers:
    - url: https://audit.{csp}.{geo}.pangea.cloud
      variables:
        csp:
          default: aws
        geo:
          default: us
    post:
      operationId: auditLog
      tags:
      - Secure Audit Log
      summary: Log an entry.
      description: Create a log entry in the Secure Audit Log.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuditLogRequest'
      responses:
        '200':
          description: Entry logged with cryptographic proof material.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuditLogResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/log:
    servers:
    - url: https://audit.{csp}.{geo}.pangea.cloud
      variables:
        csp:
          default: aws
        geo:
          default: us
    post:
      operationId: auditLogBulk
      tags:
      - Secure Audit Log
      summary: Log multiple entries.
      description: Create up to 1000 log entries in a single request.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - events
              properties:
                events:
                  type: array
                  minItems: 1
                  maxItems: 1000
                  items:
                    $ref: '#/components/schemas/AuditEvent'
                verbose:
                  type: boolean
                config_id:
                  type: string
      responses:
        '200':
          description: Entries logged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PangeaResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/search:
    servers:
    - url: https://audit.{csp}.{geo}.pangea.cloud
      variables:
        csp:
          default: aws
        geo:
          default: us
    post:
      operationId: auditSearch
      tags:
      - Secure Audit Log
      summary: Search the audit log.
      description: Search the Secure Audit Log and return matching, verifiable events.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuditSearchRequest'
      responses:
        '200':
          description: Search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PangeaResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/root:
    servers:
    - url: https://audit.{csp}.{geo}.pangea.cloud
      variables:
        csp:
          default: aws
        geo:
          default: us
    post:
      operationId: auditRoot
      tags:
      - Secure Audit Log
      summary: Get the Merkle tree root.
      description: Return the current root hash and consistency proof for verification.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                tree_size:
                  type: integer
                config_id:
                  type: string
      responses:
        '200':
          description: Root hash and proof.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PangeaResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    AuditLogResponse:
      allOf:
      - $ref: '#/components/schemas/PangeaResponse'
      - type: object
        properties:
          result:
            type: object
            properties:
              hash:
                type: string
              unpublished_root:
                type: string
              membership_proof:
                type: string
              consistency_proof:
                type: array
                items:
                  type: string
    PangeaResponse:
      type: object
      description: Standard Pangea response envelope wrapping every service result.
      properties:
        request_id:
          type: string
        request_time:
          type: string
          format: date-time
        response_time:
          type: string
          format: date-time
        status:
          type: string
          example: Success
        summary:
          type: string
        result:
          type: object
    AuditEvent:
      type: object
      properties:
        message:
          type: string
          description: Main log message.
        actor:
          type: string
        action:
          type: string
        target:
          type: string
        status:
          type: string
        source:
          type: string
        timestamp:
          type: string
          format: date-time
    AuditSearchRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
        max_results:
          type: integer
        order:
          type: string
          enum:
          - asc
          - desc
        config_id:
          type: string
    AuditLogRequest:
      type: object
      properties:
        event:
          $ref: '#/components/schemas/AuditEvent'
        verbose:
          type: boolean
        signature:
          type: string
        public_key:
          type: string
        config_id:
          type: string
  responses:
    Unauthorized:
      description: Missing or invalid authentication token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PangeaResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Pangea service token or OAuth 2 access token passed as a Bearer token.