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

# Export activity

> Export every activity entry that matches the filters, newest first, as CSV or JSON Lines. The file is streamed, so a long export starts downloading at once.



## OpenAPI

````yaml https://api.ravion.com/openapi.yaml get /activity-export
openapi: 3.0.0
info:
  title: Ravion
  version: 0.0.0
servers:
  - url: https://api.ravion.com
security:
  - BearerAuth: []
tags:
  - name: Projects
  - name: Environments
  - name: FeatureFlags
  - name: Pipelines
  - name: PipelineRuns
  - name: TerraformResources
  - name: TerraformExecutionSummaries
  - name: PipelineStepExecutions
  - name: AwsCloudWatch
  - name: AwsAmp
  - name: PipelineVersions
  - name: Organizations
  - name: Stacks
  - name: StackWorkspaces
  - name: Auth
  - name: OAuth
  - name: User
  - name: Health
  - name: Memberships
  - name: ServiceAccounts
  - name: Integrations
  - name: AwsDefaultNetworks
  - name: AwsAccounts
  - name: ApiKeys
  - name: EksPrometheus
  - name: EksLoki
  - name: ExecutionEnvironments
  - name: ModuleDefinitions
  - name: ModuleCategories
  - name: ModuleVersions
  - name: ModuleInstances
  - name: DefaultValueDefinitions
  - name: DefaultValues
  - name: CodeSources
  - name: Github
  - name: GitHub Actions
  - name: Alerts
  - name: Gitlab
  - name: Slack
  - name: Git
  - name: MergeQueues
  - name: Values
  - name: Deployments
  - name: DeploymentResources
  - name: InfrastructureEvents
  - name: WebSocket
  - name: Domains
  - name: AcmCertificates
  - name: NotificationDestinations
  - name: NotificationDispatches
  - name: NotificationEvents
  - name: NotificationRules
  - name: Activity
  - name: Describe
  - name: Reports
  - name: BillingPlans
  - name: BillingAccounts
  - name: BillingCycles
  - name: BillingUsageSummaries
  - name: BillingAddOns
  - name: BillingInvoices
  - name: Authorization
  - name: Sandboxes
  - name: SandboxCommands
  - name: SandboxPorts
  - name: Apps
paths:
  /activity-export:
    get:
      tags:
        - Activity
      summary: Export activity
      description: >-
        Export every activity entry that matches the filters, newest first, as
        CSV or JSON Lines. The file is streamed, so a long export starts
        downloading at once. Exporting requires permission to update the
        organization, and includes every category. Refused with 403 unless the
        `activity-page` feature flag is on for your organization. CSV columns:
        occurredAt, id, category, catalogId, status, identityType, identity,
        subjectType, subjectId, resourceName, project, environment, pipeline,
        ip, client, clientVersion, authentication, requestId, correlationId.
      operationId: ExportActivity
      parameters:
        - $ref: '#/components/parameters/Activity.FilterParams.occurredAfter'
        - $ref: '#/components/parameters/Activity.FilterParams.occurredBefore'
        - $ref: '#/components/parameters/Activity.FilterParams.category'
        - $ref: '#/components/parameters/Activity.FilterParams.event'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeEvent'
        - $ref: '#/components/parameters/Activity.FilterParams.identity'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeIdentity'
        - $ref: '#/components/parameters/Activity.FilterParams.identityType'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeIdentityType'
        - $ref: '#/components/parameters/Activity.FilterParams.projectId'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeProjectId'
        - $ref: '#/components/parameters/Activity.FilterParams.environmentId'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeEnvironmentId'
        - $ref: '#/components/parameters/Activity.FilterParams.pipelineId'
        - $ref: '#/components/parameters/Activity.FilterParams.excludePipelineId'
        - $ref: '#/components/parameters/Activity.FilterParams.moduleInstanceId'
        - $ref: '#/components/parameters/Activity.FilterParams.subjectType'
        - $ref: '#/components/parameters/Activity.FilterParams.subjectId'
        - $ref: '#/components/parameters/Activity.FilterParams.resourceName'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeResourceName'
        - $ref: '#/components/parameters/Activity.FilterParams.status'
        - $ref: '#/components/parameters/Activity.FilterParams.ip'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeIp'
        - $ref: '#/components/parameters/Activity.FilterParams.client'
        - $ref: '#/components/parameters/Activity.FilterParams.excludeClient'
        - $ref: '#/components/parameters/Activity.FilterParams.requestId'
        - $ref: '#/components/parameters/Activity.FilterParams.correlationId'
        - $ref: '#/components/parameters/Activity.FilterParams.q'
        - description: The file format.
          in: query
          name: format
          required: true
          schema:
            enum:
              - csv
              - jsonl
            type: string
      responses:
        '200':
          content:
            application/x-ndjson:
              schema:
                format: binary
                type: string
            text/csv:
              schema:
                format: binary
                type: string
          description: >-
            The exported activity file: CSV, or JSON Lines with one entry per
            line in the shape `getActivity` returns.
          headers:
            Content-Disposition:
              description: '`attachment; filename="activity-<time>.csv"` or `.jsonl`.'
              required: true
              schema:
                type: string
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: The request is invalid or malformed.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: You are not authenticated
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: You do not have permission to access this resource.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: Server error
components:
  parameters:
    Activity.FilterParams.occurredAfter:
      description: >-
        Only entries recorded at or after this time. Required: every Activity
        read is bounded in time, and it may be at most as far back as Activity
        is kept, 60 days by default.
      in: query
      name: occurredAfter
      required: true
      schema:
        $ref: '#/components/schemas/UtcDateTime'
    Activity.FilterParams.occurredBefore:
      description: Only entries recorded before this time. Defaults to now.
      in: query
      name: occurredBefore
      schema:
        allOf:
          - $ref: '#/components/schemas/UtcDateTime'
        nullable: true
        type: string
    Activity.FilterParams.category:
      description: >-
        Categories to include. Omitted means every category you may read. Naming
        `access` without permission to update the organization is refused with
        403.
      in: query
      name: category
      schema:
        items:
          $ref: '#/components/schemas/Events.ActivityCategory'
        maxItems: 3
        nullable: true
        type: array
    Activity.FilterParams.event:
      description: >-
        Activity catalog ids to include, exactly as `listActivityCatalog`
        returns them. An id outside the activity catalog is refused with 400.
      in: query
      name: event
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.excludeEvent:
      description: Activity catalog ids to leave out.
      in: query
      name: excludeEvent
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.identity:
      description: Identities to include.
      in: query
      name: identity
      schema:
        items:
          $ref: '#/components/schemas/Activity.IdentityKey'
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.excludeIdentity:
      description: Identities to leave out.
      in: query
      name: excludeIdentity
      schema:
        items:
          $ref: '#/components/schemas/Activity.IdentityKey'
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.identityType:
      description: Kinds of identity to include.
      in: query
      name: identityType
      schema:
        items:
          $ref: '#/components/schemas/Events.ActivityIdentityKind'
        maxItems: 5
        nullable: true
        type: array
    Activity.FilterParams.excludeIdentityType:
      description: Kinds of identity to leave out.
      in: query
      name: excludeIdentityType
      schema:
        items:
          $ref: '#/components/schemas/Events.ActivityIdentityKind'
        maxItems: 5
        nullable: true
        type: array
    Activity.FilterParams.projectId:
      description: Projects to include.
      in: query
      name: projectId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.excludeProjectId:
      description: Projects to leave out.
      in: query
      name: excludeProjectId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.environmentId:
      description: Environments to include.
      in: query
      name: environmentId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.excludeEnvironmentId:
      description: Environments to leave out.
      in: query
      name: excludeEnvironmentId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.pipelineId:
      description: Pipelines to include.
      in: query
      name: pipelineId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.excludePipelineId:
      description: Pipelines to leave out.
      in: query
      name: excludePipelineId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.moduleInstanceId:
      description: >-
        Module instances to include: entries about the module instance itself,
        its deployments, and the pipeline runs and steps that act on it.
      in: query
      name: moduleInstanceId
      schema:
        items:
          type: string
        maxItems: 200
        nullable: true
        type: array
    Activity.FilterParams.subjectType:
      description: >-
        Only entries about one kind of resource, for example `pipeline_run`.
        Pair it with `subjectId` to read one resource's history.
      in: query
      name: subjectType
      schema:
        nullable: true
        type: string
    Activity.FilterParams.subjectId:
      description: >-
        Only entries about the resource with this id. Pair it with
        `subjectType`.
      in: query
      name: subjectId
      schema:
        nullable: true
        type: string
    Activity.FilterParams.resourceName:
      description: >-
        Resource names to include, as they were when each entry was recorded,
        compared case-insensitively. Entries keep the name a resource had, so a
        renamed or deleted resource is still found by its old name.
      in: query
      name: resourceName
      schema:
        items:
          type: string
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.excludeResourceName:
      description: Resource names to leave out, compared case-insensitively.
      in: query
      name: excludeResourceName
      schema:
        items:
          type: string
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.status:
      description: Outcomes to include.
      in: query
      name: status
      schema:
        items:
          $ref: '#/components/schemas/Events.ActivityStatus'
        maxItems: 2
        nullable: true
        type: array
    Activity.FilterParams.ip:
      description: Source IP addresses to include, exactly as recorded.
      in: query
      name: ip
      schema:
        items:
          type: string
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.excludeIp:
      description: Source IP addresses to leave out.
      in: query
      name: excludeIp
      schema:
        items:
          type: string
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.client:
      description: Clients to include.
      in: query
      name: client
      schema:
        items:
          $ref: '#/components/schemas/Events.ActivityClient'
        maxItems: 6
        nullable: true
        type: array
    Activity.FilterParams.excludeClient:
      description: Clients to leave out.
      in: query
      name: excludeClient
      schema:
        items:
          $ref: '#/components/schemas/Events.ActivityClient'
        maxItems: 6
        nullable: true
        type: array
    Activity.FilterParams.requestId:
      description: >-
        Request ids to include, as returned in the responses of the requests
        that caused each entry.
      in: query
      name: requestId
      schema:
        items:
          type: string
        maxItems: 50
        nullable: true
        type: array
    Activity.FilterParams.correlationId:
      description: >-
        Only the entries one action caused, including work Ravion finished later
        on its own.
      in: query
      name: correlationId
      schema:
        nullable: true
        type: string
    Activity.FilterParams.q:
      description: >-
        Free-text words, compared case-insensitively. An entry matches when
        every word appears in who acted, its catalog id, the resource name, the
        project, environment or pipeline name, or the source IP address.
      in: query
      name: q
      schema:
        items:
          type: string
        maxItems: 10
        nullable: true
        type: array
  schemas:
    Errors.UserFacingErrorData:
      additionalProperties: false
      description: |-
        User-facing error presentation data.
        This is what the API returns to the frontend after formatting ErrorData
        using CEL templates from the error registry.

        Used for both:
        - Error fields on domain models (e.g., PipelineRun.error)
        - API error response bodies (HTTP 4xx/5xx responses)
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Errors.Action'
          description: Optional action to help resolve the error
        code:
          description: Full error code, e.g., "Ravion:Pipeline:NOT_FOUND"
          type: string
        description:
          description: Additional description with more details
          type: string
        details:
          description: Structured details rendered as user-facing sections.
          items:
            $ref: '#/components/schemas/Errors.UserFacingErrorDetailSection'
          type: array
        isInternal:
          description: >-
            Indicates whether this error is internal (only set when
            ShowInternal=true).

            This allows SUPERADMINs to identify internal errors while viewing
            full details.
          type: boolean
        message:
          description: Main error message (required)
          type: string
        metadata:
          additionalProperties: {}
          description: >-
            Error params/metadata. Stripped for internal errors unless
            superadmin.
          type: object
        requestId:
          description: Request ID for correlating errors with server logs.
          type: string
      required:
        - code
        - message
      type: object
    UtcDateTime:
      description: UTC RFC3339 timestamp with a required Z suffix
      format: date-time
      pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,9})?Z$
      type: string
      x-go-type: apitypes.UTCDateTime
      x-go-type-import:
        name: apitypes
        path: ravion/api-go/pkg/apitypes
    Events.ActivityCategory:
      description: >-
        Which Activity section an entry belongs to. It also decides who may read

        the entry: Access and security entries are visible to organization
        admins

        only.
      enum:
        - runs
        - changes
        - access
      type: string
    Activity.IdentityKey:
      description: >-
        An identity, as `<kind>:<id>`: `member:mem_…`, `api_key:apikey_…`,
        `mcp_client:mem_…` (an MCP client acting for that member),
        `service_account:svcact_…`, or `system` for Ravion itself.
      pattern: ^(system|(member|api_key|mcp_client|service_account):[A-Za-z0-9_]+)$
      type: string
    Events.ActivityIdentityKind:
      description: |-
        The kind of identity that acted. Every credential that can act on Ravion
        is an identity, not only people.
      enum:
        - member
        - service_account
        - api_key
        - mcp_client
        - system
      type: string
    Events.ActivityStatus:
      description: >-
        Whether the recorded action succeeded. A cancelled or rolled-back
        outcome

        counts as succeeded: the action did what was asked.
      enum:
        - succeeded
        - failed
      type: string
    Events.ActivityClient:
      description: |-
        The client a request came from, as identified by its User-Agent and by
        how it authenticated.
      enum:
        - dashboard
        - cli
        - api
        - terraform
        - mcp
        - slack
      type: string
    Errors.Action:
      additionalProperties: false
      description: Action to help user resolve the error
      properties:
        label:
          description: Button/link label text
          type: string
        url:
          description: URL to navigate to for resolution
          type: string
      required:
        - label
        - url
      type: object
    Errors.UserFacingErrorDetailSection:
      additionalProperties: false
      description: Structured user-facing error detail section.
      properties:
        items:
          description: List of detail values for this section.
          items:
            type: string
          type: array
        object:
          additionalProperties: {}
          description: Structured detail payload for object rendering.
          type: object
        render:
          description: Rendering hint for clients. Valid values are list or object.
          type: string
        title:
          description: Detail section title shown in the UI.
          type: string
      required:
        - title
        - render
      type: object
  securitySchemes:
    BearerAuth:
      scheme: Bearer
      type: http

````

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