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

# Read organization or record activity

> Requires activity_logs_view, interactions_manage or donors_manage. Results enforce current program, participation-site/cohort, owner-only, restricted SMS-line and manual-interaction privacy access. Page mentions appear only on accessible donor/recipient timelines and may record exposure for normal user requests. Email Intelligence V2 removes legacy provider rows from the broad timeline. Email body text and preview pointers follow the current body policy, including mailbox, program and private-owner restrictions where applicable. Returns activity rows and pagination; per_page accepts 10, 15 or 20, otherwise defaults to 10. General/donor feeds without a search phrase use current database rows. Nonblank query/search/q searches metadata and authorized email bodies through the index, then rechecks current rows and disclosure before returning results. More than 20,000 indexed candidates returns 422 with empty activities and null pagination; narrow the phrase or date range. Recipient activity reads the database and ignores text search. Other search failures return an empty 200 response with message. additional_data remains a JSON-encoded string. fresh=true reads the newest ten committed donor entries directly with a fixed 90-day window; it ignores text search and requires the other documented filters to be absent.



## OpenAPI

````yaml get /admin/activityLogs
openapi: 3.0.0
info:
  title: Gratona API
  description: >-
    REST API for the Gratona fundraising platform, including donor, donation,
    sponsorship, program, event, and integration workflows. Endpoints are
    organized by tag. Most endpoints require either a Passport bearer token or
    an issued API key — see the Security Schemes section.
  contact:
    name: Gratona Engineering
    url: https://gratona.com
    email: devs@gratona.com
  version: 1.0.0
servers:
  - url: https://api.gratona.com/v1
    description: Server Version 1.0.0
security: []
tags:
  - name: Auth
    description: >-
      Login, signup, logout, password reset, and email verification for admin
      users and donors.
  - name: Donors
    description: >-
      Donor records: CRUD, profile fields, household linkage, search, filters,
      merge, and duplicate detection.
  - name: Donations
    description: >-
      Individual donation records, recurring commitments, soft credits, refunds,
      designations, and exports.
  - name: Sponsorships
    description: >-
      Donor-to-entity commitment relationships, lifecycle transitions, and
      commitment-specific filters.
  - name: Entities
    description: >-
      Recipient records (children, families, projects, animals, etc.), their
      status, and entity-level fields.
  - name: Programs
    description: >-
      Program / campaign configuration: hierarchy, settings, and program-level
      metadata.
  - name: Forms
    description: >-
      Custom form builder (HysForm), form fields, standardized donor fields, and
      field migrations.
  - name: Trips
    description: >-
      Mission-trip management: trips, participants, budgets, tasks,
      e-signatures, fundraising milestones, and background checks.
  - name: Communications
    description: >-
      Email templates, SMS, newsletters, donor email manager, and per-donor
      notes.
  - name: Payments
    description: >-
      Payment-gateway management (Stripe, PayPal, Flutterwave, QuickBooks).
      Excludes inbound webhooks — see the Webhooks tag.
  - name: Reports
    description: Dashboards, analytics, scheduled reports, and exports.
  - name: Admin
    description: >-
      Client-account administration: users, groups/permissions, settings,
      integrations, and account lifecycle.
  - name: Donor Portal
    description: >-
      Endpoints consumed by the donor-facing portal (donor login, dashboard,
      donation history, messages).
  - name: Recipient Portal
    description: Endpoints consumed by the recipient-facing portal.
  - name: Public
    description: >-
      Unauthenticated public endpoints: donor signup, public trip pages,
      peer-to-peer campaigns, public checkout.
  - name: Webhooks
    description: >-
      Inbound webhooks from third parties (Stripe, PayPal, Flutterwave, Checkr,
      DropboxSign). Annotated minimally for reference; payload shapes are owned
      by the upstream provider.
  - name: Events
    description: >-
      Event setup, invitations, registration, ticketing, attendance and event
      reporting.
  - name: Journeys
    description: >-
      Journey graphs, activation, enrollment, message templates and event
      follow-up automations.
  - name: Tasks
    description: Workspace tasks, assignments, saved task views and record collaboration.
  - name: Fundraising
    description: >-
      Fundraising portfolios, stewardship plans, giving anniversaries and
      personal donor follow-up.
  - name: Impact Stories
    description: Story intake, review, assets, consent and publication workflows.
  - name: Integrations
    description: Workspace integration connections, mappings, synchronization and recovery.
  - name: Email Calendar
    description: Connected email/calendar accounts and donor interactions.
  - name: Spaces
    description: Workspace Spaces and collaborative Pages.
  - name: Library
    description: Workspace documents, source connections, files and analysis.
  - name: Intelligence
    description: Donor intelligence and Tali workspace workflows.
  - name: Automation
    description: >-
      V3 automation primitive discovery, input validation, invocation and Zapier
      contracts.
  - name: Schema
    description: V3 model, enum, capability and scope discovery.
  - name: Zapier
    description: Zapier automation connections, polling feeds and actions.
  - name: Files
    description: Files
  - name: Client
    description: Client
  - name: Payment Gateways
    description: Payment Gateways
  - name: Email Settings
    description: Email Settings
  - name: Admin Dashboard
    description: Admin Dashboard
  - name: Recipients
    description: Recipients
  - name: Historical Archived Updates
    description: Historical Archived Updates
  - name: Team & access
    description: Team & access
  - name: Settings
    description: Settings
  - name: Notifications
    description: Notifications
  - name: Participation
    description: Participation
  - name: Users
    description: Users
  - name: Wrapped
    description: Wrapped
  - name: Donor SignUp
    description: Donor SignUp
  - name: Frontend
    description: Frontend
  - name: User
    description: User
  - name: Workspace
    description: Workspace
paths:
  /admin/activityLogs:
    get:
      tags:
        - Admin
      summary: Read organization or record activity
      description: >-
        Requires activity_logs_view, interactions_manage or donors_manage.
        Results enforce current program, participation-site/cohort, owner-only,
        restricted SMS-line and manual-interaction privacy access. Page mentions
        appear only on accessible donor/recipient timelines and may record
        exposure for normal user requests. Email Intelligence V2 removes legacy
        provider rows from the broad timeline. Email body text and preview
        pointers follow the current body policy, including mailbox, program and
        private-owner restrictions where applicable. Returns activity rows and
        pagination; per_page accepts 10, 15 or 20, otherwise defaults to 10.
        General/donor feeds without a search phrase use current database rows.
        Nonblank query/search/q searches metadata and authorized email bodies
        through the index, then rechecks current rows and disclosure before
        returning results. More than 20,000 indexed candidates returns 422 with
        empty activities and null pagination; narrow the phrase or date range.
        Recipient activity reads the database and ignores text search. Other
        search failures return an empty 200 response with message.
        additional_data remains a JSON-encoded string. fresh=true reads the
        newest ten committed donor entries directly with a fixed 90-day window;
        it ignores text search and requires the other documented filters to be
        absent.
      operationId: docDashboardActivityLogsGET
      parameters:
        - name: query
          in: query
          description: >-
            Search activity metadata and currently authorized email body text.
            Preferred query key; search and q are compatibility aliases. Ignored
            by recipient timelines and fresh donor previews. Narrow the phrase
            or date range when the candidate budget is exceeded.
          required: false
          schema:
            type: string
          example: education update
        - name: search
          in: query
          description: >-
            Compatibility search text used when query is absent. Ignored by
            recipient timelines and fresh donor previews.
          required: false
          schema:
            type: string
          example: education update
        - name: q
          in: query
          description: >-
            Compatibility search text used when both query and search are
            absent. Ignored by recipient timelines and fresh donor previews.
          required: false
          schema:
            type: string
          example: education update
        - name: donor_id
          in: query
          description: Restrict to this donor within the organization.
          required: false
          schema:
            type: integer
          example: 123
        - name: entity_id
          in: query
          description: >-
            Read recipient activity directly; unknown recipient produces an
            empty page.
          required: false
          schema:
            type: integer
          example: 123
        - name: range
          in: query
          description: >-
            Look back this many days; values at or below zero remove the date
            boundary.
          required: false
          schema:
            type: integer
            default: 90
          example: 90
        - name: actions[]
          in: query
          description: >-
            Activity action allowlist for the row search. Facet handling varies
            by the recipient and search paths.
          required: false
          schema:
            type: array
            items:
              type: string
          example:
            - donor_updated
        - name: table_names[]
          in: query
          description: Affected table allowlist for the row search.
          required: false
          schema:
            type: array
            items:
              type: string
          example:
            - donors
        - name: exclude_types[]
          in: query
          description: Exclude merged activity row types.
          required: false
          schema:
            type: array
            items:
              type: string
          example:
            - manual_interaction
        - name: unmatched_only
          in: query
          description: >-
            Legacy mode selects unreviewed/unmatched external email; ignored as
            a match filter when Email Intelligence V2 is enabled.
          required: false
          schema:
            type: boolean
          example: true
        - name: page
          in: query
          description: Page.
          required: false
          schema:
            type: integer
            default: 1
          example: 1
        - name: per_page
          in: query
          description: Per page.
          required: false
          schema:
            type: integer
            default: 10
            enum:
              - 10
              - 15
              - 20
          example: 10
        - name: fresh
          in: query
          description: >-
            Read the committed newest 10 donor entries before search indexing.
            Requires a signed-in user and donor_id; entity_id, page, per_page,
            range, actions, table_names, exclude_types and unmatched_only must
            be absent.
          required: false
          schema:
            type: boolean
            default: false
          example: true
      responses:
        '200':
          description: Read organization or record activity response.
          content:
            application/json:
              schema:
                properties:
                  activities:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkspaceActivityLogRowDoc'
                  pagination:
                    properties:
                      current_page:
                        type: integer
                      last_page:
                        type: integer
                      per_page:
                        type: integer
                      total:
                        type: integer
                      from:
                        type: integer
                      to:
                        type: integer
                    type: object
                  email_intelligence_v2_enabled:
                    type: boolean
                  message:
                    type: string
                type: object
        '401':
          description: Missing or invalid bearer token or API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '403':
          description: >-
            The caller lacks the required permission, resource access or feature
            availability.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: >-
            Invalid fresh-preview input, or text search exceeds the 20,000
            indexed-candidate budget. The latter returns message, empty
            activities and null pagination.
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/RequestRejection'
                  - required:
                      - message
                      - activities
                      - pagination
                    properties:
                      message:
                        type: string
                        example: >-
                          Activity Log search is too broad; narrow the phrase or
                          date range.
                      activities:
                        type: array
                        items:
                          $ref: '#/components/schemas/WorkspaceActivityLogRowDoc'
                        maxItems: 0
                      pagination:
                        type: object
                        nullable: true
                    type: object
      security:
        - bearerAuth: []
        - apiKeyAuth: []
components:
  schemas:
    WorkspaceActivityLogRowDoc:
      properties:
        id:
          type: integer
          nullable: true
        client_id:
          type: integer
          nullable: true
        program_id:
          type: integer
          nullable: true
        admin_id:
          type: integer
          nullable: true
        donor_id:
          type: integer
          nullable: true
        table_name:
          type: string
          nullable: true
        record_id:
          type: integer
          nullable: true
        action:
          type: string
          nullable: true
        deleted_at:
          type: string
          format: date-time
          nullable: true
        additional_data:
          description: >-
            JSON-encoded, action-dependent metadata after viewer privacy and
            disclosure filtering. It is a string, not an embedded JSON object.
          type: string
        created_at:
          type: string
          nullable: true
        updated_at:
          type: string
          nullable: true
        descriptions:
          type: string
        type:
          type: string
          nullable: true
      type: object
    UnauthorizedResponse:
      title: UnauthorizedResponse
      description: >-
        Returned with HTTP 401 when the request lacks a valid Passport bearer
        token, a valid `X-HYS-API-Key`, or a valid session. The body is the
        simple `{message, status}` envelope emitted by `AuthenticateApiOrKey`.
      required:
        - message
        - status
      properties:
        message:
          description: >-
            Always the literal string `Unauthorized` from the `auth.api_or_key`
            middleware. Login endpoints return `Invalid Credentials` instead.
          type: string
          example: Unauthorized
        status:
          type: string
          example: error
      type: object
    ErrorResponse:
      title: ErrorResponse
      description: >-
        Generic error envelope used by most controllers. Most error responses
        pair a human-readable `message` with `status: error`. Some endpoints
        additionally include `errors` (validator errors), `error` (legacy
        single-error string), `code`, or domain-specific context fields.
      required:
        - message
      properties:
        message:
          description: Human-readable error message.
          type: string
          example: Something went wrong. Please try again.
        status:
          description: >-
            Always the literal string `error` for failures. Some endpoints omit
            this field.
          type: string
          example: error
        error:
          description: Legacy single error code/string used by older endpoints.
          type: string
          example: invalid_request
          nullable: true
        code:
          description: >-
            Optional application-level error code (not all endpoints populate
            this).
          type: string
          example: DONOR_NOT_FOUND
          nullable: true
      type: object
    RequestRejection:
      description: >-
        Request or workflow rejection. Framework field-validation failures
        contain errors; semantic rejections may contain message without errors;
        legacy/provider failures may use error and error_code. The operation
        description identifies the rejected condition. Domain responses may add
        current revision, limits or other conflict context.
      anyOf:
        - $ref: '#/components/schemas/ValidationErrorResponse'
        - $ref: '#/components/schemas/ErrorResponse'
        - required:
            - error
          properties:
            error:
              description: Legacy or provider-facing error message.
              type: string
              example: The request could not be completed.
            error_code:
              description: Stable domain error code, when provided.
              type: string
              example: WORKFLOW_UNAVAILABLE
          type: object
    ValidationErrorResponse:
      title: ValidationErrorResponse
      description: >-
        Returned with HTTP 422 when `Validator::make($data, $rules)` fails. The
        `errors` map is keyed by the failing field name; each value is an array
        of human-readable error messages for that field. Most controllers also
        include a top-level `status: error`.
      required:
        - errors
      properties:
        errors:
          description: >-
            Map of field name to array of validator error messages. Example:
            `{email: [The email field is required.], amount: [The amount must be
            a number.]}`.
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        status:
          description: Always the literal string `error`.
          type: string
          example: error
        message:
          description: >-
            Optional summary message — present on some endpoints, absent on
            others.
          type: string
          example: The given data was invalid.
          nullable: true
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      description: Passport bearer token authentication for legacy admin sessions.
      scheme: bearer
      bearerFormat: JWT
    apiKeyAuth:
      type: apiKey
      description: Gratona API key sent with the compatibility header X-HYS-API-Key.
      name: X-HYS-API-Key
      in: header

````

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