> ## Documentation Index
> Fetch the complete documentation index at: https://docs.causeloop.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# List the tenant audit log

> Requires an authenticated tenant session (any permission). Returns up to `limit` (default 50, capped at 200) most-recent `audit_log` rows (tenant schema), optionally filtered to one resource. A read-only view of every CAP, review, and other tracked mutation on this router that has been written for the tenant, each entry carrying the acting user's email and session id (IP address is stored on the row but not returned by this endpoint).



## OpenAPI

````yaml /api-reference/openapi.json get /remediation/audit-log
openapi: 3.1.0
info:
  title: CL MVP Product API
  description: >-
    The Causeloop MVP Product API is a deliberately small, explicitly
    allowlisted HTTP surface: `services/api/product_app.py` enumerates every one
    of the 44 published (method, path) operations drawn from seven routers, and
    only those operations are mounted onto this app -- everything else defined
    in the underlying routers (and the entire legacy research surface in
    `services/api/main.py`) is not exposed here. Staff (employee) and
    tenant-user sessions are separate cookie-based principals with no shared
    session table; mutating requests are protected by a double-submit CSRF
    cookie/header pair. See `/api-reference/authentication` for session and CSRF
    details, and `/api-reference/errors-and-conventions` for shared error shapes
    and status-code conventions.
  version: 1.0.0
servers: []
security: []
tags:
  - name: Auth
    description: >-
      Staff (employee) and tenant-user session lifecycle: login/logout,
      current-identity reads, invitation acceptance, and the public pre-login
      workspace directory.
  - name: Staff Onboarding
    description: >-
      The Onboarding Portal surface used to create, provision, ingest data for,
      train, activate, and go-live a tenant. Every operation requires an
      authenticated employee session; mutations additionally require the
      `onboarding_admin` control role (`support_readonly` employees can read but
      not write).
  - name: Insights
    description: >-
      Tenant-facing reads of materialized insight collections (themes, severity,
      issues, fishbone, and related model outputs) produced by the training and
      materialization pipeline.
  - name: Members
    description: Read-only tenant member directory.
  - name: Sources
    description: Tenant-facing source-connector registration and file-upload ingest.
  - name: Remediation
    description: >-
      Tenant-scoped corrective action plans (CAPs), human-in-the-loop issue
      reviews, the tenant audit trail, and the branded Excel export.
  - name: Health & Observability
    description: >-
      Unauthenticated liveness/readiness probes and the employee-only Prometheus
      metrics scrape endpoint.
paths:
  /remediation/audit-log:
    get:
      tags:
        - Remediation
      summary: List the tenant audit log
      description: >-
        Requires an authenticated tenant session (any permission). Returns up to
        `limit` (default 50, capped at 200) most-recent `audit_log` rows (tenant
        schema), optionally filtered to one resource. A read-only view of every
        CAP, review, and other tracked mutation on this router that has been
        written for the tenant, each entry carrying the acting user's email and
        session id (IP address is stored on the row but not returned by this
        endpoint).
      operationId: list_audit_log_remediation_audit_log_get
      parameters:
        - name: resource_type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Resource Type
        - name: resource_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Resource Id
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            title: Limit
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AuditLogEntry'
                title: Response List Audit Log Remediation Audit Log Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AuditLogEntry:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        actor_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Actor Email
        session_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Session Id
        action:
          type: string
          title: Action
        resource_type:
          type: string
          title: Resource Type
        resource_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Resource Id
        detail:
          additionalProperties: true
          type: object
          title: Detail
        created_at:
          type: string
          title: Created At
      type: object
      required:
        - id
        - actor_email
        - session_id
        - action
        - resource_type
        - resource_id
        - detail
        - created_at
      title: AuditLogEntry
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError

````