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

# Membership Audit Trail for a component (base purl) selection

> Returns a membership projection of durable Finding audit events for all present posture findings that join the selected component's base purl within a project. Equivalent sibling events (same actor id, event_type, reason_slug, occurred_at, replacement_purl) are collapsed into beats with file membership. Spine events only (finding.detected/resolved/reopened/ suppressed/unsuppressed/superseded_by_rule, resolution.autonomous/ confirmed). Ordered oldest→newest with Detected pinned when present and up to K=20 other latest collapsed beats; more_available signals rail budget truncation. This is NOT a component audit subject — full history lives in the organization Audit Log.



## OpenAPI

````yaml /api-reference/earnie/triage-openapi.json get /v1/findings/components/audit-trail
openapi: 3.0.3
info:
  title: Earnie Findings API
  description: List and read findings, triage them, and review resolutions.
  version: 1.0.0
servers:
  - url: https://{tenant}.earnie.dev
    description: Your Earnie deployment
    variables:
      tenant:
        default: your-company
        description: >-
          Your organization's Earnie address, as shown in your browser when you
          sign in.
security:
  - bearerAuth: []
paths:
  /v1/findings/components/audit-trail:
    get:
      tags:
        - findings
      summary: Membership Audit Trail for a component (base purl) selection
      description: >-
        Returns a membership projection of durable Finding audit events for all
        present posture findings that join the selected component's base purl
        within a project. Equivalent sibling events (same actor id, event_type,
        reason_slug, occurred_at, replacement_purl) are collapsed into beats
        with file membership. Spine events only
        (finding.detected/resolved/reopened/
        suppressed/unsuppressed/superseded_by_rule, resolution.autonomous/
        confirmed). Ordered oldest→newest with Detected pinned when present and
        up to K=20 other latest collapsed beats; more_available signals rail
        budget truncation. This is NOT a component audit subject — full history
        lives in the organization Audit Log.
      operationId: GetV1FindingsComponentsAuditTrail
      parameters:
        - name: project_id
          in: query
          required: true
          description: Project that scopes membership findings.
          schema:
            type: string
            format: uuid
        - name: purl
          in: query
          required: true
          description: Base component purl without version (e.g. pkg:npm/lodash).
          schema:
            type: string
      responses:
        '200':
          description: Budgeted membership Audit Trail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MembershipAuditTrail'
        '400':
          description: Missing or invalid project_id / purl
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Not authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient permissions (findings:read required)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    MembershipAuditTrail:
      type: object
      description: >-
        Budgeted membership Audit Trail for a component rail selection — a
        projection of Finding audit events, not a component subject.
      required:
        - beats
        - more_available
      properties:
        beats:
          type: array
          items:
            $ref: '#/components/schemas/MembershipAuditBeat'
        more_available:
          type: boolean
          description: >-
            True when the rail budget truncated history; full history lives in
            the organization Audit Log.
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
        message:
          type: string
    MembershipAuditBeat:
      type: object
      description: >-
        One collapsed membership audit beat — equivalent sibling Finding audit
        events (same actor, type, reason, timestamp, replacement) rolled into a
        single row with file membership.
      required:
        - event_type
        - actor
        - occurred_at
        - file_count
      properties:
        event_type:
          type: string
          description: Spine event type (e.g. finding.detected, finding.resolved).
        actor:
          $ref: '#/components/schemas/ActorRef'
        occurred_at:
          type: string
          format: date-time
        file_count:
          type: integer
          description: Number of member findings collapsed into this beat.
        reason_slug:
          type: string
          nullable: true
        replacement_purl:
          type: string
          nullable: true
        actor_display_name:
          type: string
          nullable: true
        previous_state:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
        note:
          type: string
          nullable: true
        members:
          type: array
          items:
            $ref: '#/components/schemas/MembershipAuditMember'
    ActorRef:
      type: object
      required:
        - kind
        - id
      properties:
        kind:
          type: string
          enum:
            - user
            - apikey
            - worker
            - agent
        id:
          type: string
          format: uuid
    MembershipAuditMember:
      type: object
      description: One finding in a collapsed membership audit beat.
      required:
        - finding_id
      properties:
        finding_id:
          type: string
          format: uuid
        local_file:
          type: string
          nullable: true
          description: >-
            Matched local path for oss-diff findings; null/empty for deps-only
            members without a code path.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An Earnie API key, sent as `Authorization: Bearer sk_earnie_...`. Create
        one under Settings > API keys. The key's scopes decide which operations
        it may call.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.