---
title: "List Card Definition Activities"
method: GET
path: "/v2/loyalties/card-definitions/{cardDefinitionId}/activities"
tags: ["Card Definitions"]
---

# List Card Definition Activities

`GET /v2/loyalties/card-definitions/{cardDefinitionId}/activities`

## Request

- Base URL: `https://api.voucherify.io`
- URL: `https://api.voucherify.io/v2/loyalties/card-definitions/{cardDefinitionId}/activities`
- Auth: none required

<Warning>

<Badge color="yellow">BETA endpoint</Badge>

This is a work-in-progress documentation of a BETA endpoint. The parameters, fields, request and response bodies, and other data may subject to change. If you want to share feedback or improvements, contact [Voucherify support](https://www.voucherify.io/contact-support) or your Technical Account Manager.

</Warning>

Returns a cursor-paginated list of activities recorded for the card definition
(creation, updates, deletion, state transitions and program assignments).
Returns 404 when the card definition does not exist.

## Path parameters

- `id` string, required

## Query parameters

- `limit` integer
- `order` union
  - 'created_at' | '-created_at'
  - string[]
- `cursor` string
- `filters` CardDefinitionActivityListFilters: Filters for the card definition activities list endpoint.
  - `junction` unknown
  - `id` CardDefinitionActivityIdFilter: ID field filter for activity IDs. Allowed conditions: `$is`, `$is_not`, `$in`, `$not_in`. Values must match the card definition activity ID pattern `^lacd_[a-f0-9]+$`. `$is`/`$is_not` accept a single value; `$in`/`$not_in` accept 1-100 values.
    - `conditions` object, required
      - `$is` union: Activity ID equals the given value.
        - string
        - string[]
      - `$is_not` union: Activity ID does not equal the given value.
        - string
        - string[]
      - `$in` union: Activity ID is one of the given values (up to 100).
        - string
        - string[]
      - `$not_in` union: Activity ID is none of the given values (up to 100).
        - string
        - string[]
  - `type` CardDefinitionActivityTypeFilter: Enum field filter for activity types. Allowed conditions: `$is`, `$is_not`, `$in`, `$not_in`. Values must be one of: `vl.card_definition.created`, `vl.card_definition.updated`, `vl.card_definition.deleted`, `vl.card_definition.activated`, `vl.card_definition.deactivated`, `vl.card_definition.drafted`, `vl.card_definition.assigned`, `vl.card_definition.unassigned`.
    - `conditions` object, required
      - `$is` union: Activity type equals the given value.
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
      - `$is_not` union: Activity type does not equal the given value.
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
      - `$in` union: Activity type is one of the given values (up to 10).
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
      - `$not_in` union: Activity type is none of the given values (up to 10).
        - 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned'
        - string[]
  - `created_at` CardDefinitionDateFilter: Date field filter. Allowed conditions: `$before`, `$after`, `$is`, `$more_than`, `$less_than`, `$has_value`, `$is_unknown`. `$before`/`$after` accept a date string; `$is`/`$more_than`/`$less_than` accept a non-negative integer (number of days); `$has_value`/`$is_unknown` are presence checks. Single values may be passed as a string or a 1-element array.
    - `conditions` object, required
      - `$before` union: Date is before the given date (a date string).
        - string
        - string[]
      - `$after` union: Date is after the given date (a date string).
        - string
        - string[]
      - `$is` union: Date matches the given value expressed as a non-negative integer number of days.
        - string
        - string[]
      - `$more_than` union: Date is more than the given non-negative integer number of days ago.
        - string
        - string[]
      - `$less_than` union: Date is less than the given non-negative integer number of days ago.
        - string
        - string[]
      - `$has_value` string: Field has a value (presence check; the provided value is ignored).
      - `$is_unknown` string: Field has no value (presence check; the provided value is ignored).

## Response `200`

A paginated list of card definition activities.

- CardDefinitionActivityListResponse: Cursor-paginated list of card definition activities.
  - `data` CardDefinitionActivity[], required: The activities in the current page.
    - `id` string, required: Unique activity ID.
    - `type` 'vl.card_definition.created' | 'vl.card_definition.updated' | 'vl.card_definition.deleted' | 'vl.card_definition.activated' | 'vl.card_definition.deactivated' | 'vl.card_definition.drafted' | 'vl.card_definition.assigned' | 'vl.card_definition.unassigned', required: Activity type.
    - `data` object, required: Activity payload. For created/updated/deleted/activated/deactivated/drafted activities it contains a `card_definition` snapshot (the state of the card definition at the time of the activity). For assigned/unassigned activities it additionally contains `program` and `program_card_definition` snapshots.
      - `card_definition` CardDefinition: A card definition.
        - `id` string, required: Unique card definition ID.
        - `name` string, required: Card definition name.
        - `type` 'INDIVIDUAL', required: Card definition type.
        - `status` 'DRAFT' | 'ACTIVE' | 'DELETED', required: Current card definition status.
        - `code_config` CardDefinitionCodeConfig, required: Card code generation configuration. Always present with server-side defaults applied.
          - `pattern` string, required: Code pattern where each `#` is replaced with a random character from the charset.
          - `length` integer, required: Number of `#` placeholders in the pattern.
          - `charset` string, required: Characters used for code generation.
          - `prefix` string, required: Fixed prefix prepended to every generated code. Empty string when not set.
          - `postfix` string, required: Fixed postfix appended to every generated code. Empty string when not set.
        - `points_expiration` CardDefinitionPointsExpiration, required: Points expiration policy. Always present; defaults to `NO_EXPIRATION`.
          - `type` 'NO_EXPIRATION' | 'ROLLING_EXPIRATION' | 'CALENDAR_EXPIRATION' | 'SLIDING_EXPIRATION', required: Points expiration type.
          - `rolling_expiration` CardDefinitionPointsExpirationRollingExpiration: Rolling expiration configuration.
            - `period` CardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
            - `rounding` CardDefinitionPointsExpirationRollingExpirationRounding: Rounding of the rolling expiration date.
              - …
          - `calendar_expiration` CardDefinitionPointsExpirationCalendarExpiration: Calendar expiration configuration.
            - `expiration_dates` CardDefinitionCalendarDate[], required: Calendar dates on which points expire.
              - …
          - `sliding_expiration` CardDefinitionPointsExpirationSlidingExpiration: Sliding expiration configuration.
            - `earning_activity` boolean: Whether earning points resets the expiration window.
            - `spending_activity` boolean: Whether spending points resets the expiration window.
            - `custom_activity` boolean: Whether the configured custom events reset the expiration window.
            - `custom_activity_types` string[], required: Custom event schema IDs that reset the expiration window. Empty array when `custom_activity` is false.
            - `period` CardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
        - `pending_points` CardDefinitionPendingPoints, required: Pending points activation policy. Always present; defaults to `IMMEDIATE`.
          - `type` 'IMMEDIATE' | 'PERIOD_BASED' | 'FIXED_DATES' | 'EVENT_BASED', required: Pending points activation type.
          - `period_based` CardDefinitionPendingPointsPeriodBased: Period-based pending points activation.
            - `period` CardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
          - `fixed_dates` CardDefinitionPendingPointsFixedDates: Fixed-dates pending points activation.
            - `dates` CardDefinitionCalendarDate[], required: Calendar dates on which pending points activate.
              - …
          - `event_based` CardDefinitionPendingPointsEventBased: Event-based pending points activation.
            - `event_types` string[], required: Custom event schema IDs that activate pending points.
            - `cancel_period` CardDefinitionPeriod, required: A period expressed as a value and unit.
              - …
        - `earning_limits` CardDefinitionEarningLimits, required: Points earning limits. Always present; defaults to `NO_LIMIT` for both scopes.
          - `global` CardDefinitionEarningLimitsGlobal: Global (per card) earning limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether global earning limits apply.
            - `limits` CardDefinitionEarningLimitsGlobalLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
          - `transactions` CardDefinitionEarningLimitsTransactions: Per-transaction earning limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether per-transaction earning limits apply.
            - `limits` CardDefinitionEarningLimitsTransactionsLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
        - `spending_limits` CardDefinitionSpendingLimits, required: Points spending limits. Always present; defaults to `NO_LIMIT` for both scopes.
          - `global` CardDefinitionSpendingLimitsGlobal: Global (per card) spending limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether global spending limits apply.
            - `limits` CardDefinitionSpendingLimitsGlobalLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
          - `transactions` CardDefinitionSpendingLimitsTransactions: Per-transaction spending limits.
            - `type` 'NO_LIMIT' | 'LIMITED', required: Whether per-transaction spending limits apply.
            - `limits` CardDefinitionSpendingLimitsTransactionsLimit[], required: Limit definitions. Empty array when `type` is `NO_LIMIT`.
              - …
        - `refunds` CardDefinitionRefunds, required: Refund handling configuration. Always present; defaults to `NONE` for both scopes.
          - `spent_points` CardDefinitionRefundsSpentPoints, required: How points spent on a refunded order are handled.
            - `type` 'NONE' | 'REFUNDABLE', required: Whether spent points are refundable.
            - `methods` CardDefinitionRefundsSpentPointsMethod[], required: Refund methods. Empty array when `type` is `NONE`.
              - …
          - `earned_points` CardDefinitionRefundsEarnedPoints, required: How points earned on a refunded order are handled.
            - `type` 'NONE' | 'REFUNDABLE', required: Whether earned points are revocable on refund.
            - `methods` CardDefinitionRefundsEarnedPointsMethod[], required: Revoke methods. Empty array when `type` is `NONE`.
              - …
        - `balance_settings` CardDefinitionBalanceSettings, required: Card balance settings. Always present; defaults to `allow_negative: false`.
          - `allow_negative` boolean, required: Whether the card balance is allowed to go below zero.
        - `pay_with_points` CardDefinitionPayWithPoints, required: Pay-with-points configuration. Always present; defaults to `NO_PAYMENTS`.
          - `type` 'NO_PAYMENTS' | 'EXCHANGE_RATIO', required: Pay-with-points type.
          - `exchange_ratio` object: Exchange ratio. Only present when `type` is `EXCHANGE_RATIO`.
            - `formula` string, required: Exchange ratio formula (always returned as a string).
        - `metadata` object, required: Arbitrary key-value metadata. Empty object when not set.
        - `created_at` string, date-time, required: Creation timestamp (ISO 8601).
        - `updated_at` string, date-time, required: Last update timestamp (ISO 8601). Null when the card definition has never been updated.
        - `object` string, required: Object type marker. Always `card_definition`.
    - `created_at` string, date-time, required: Activity timestamp (ISO 8601).
    - `group_id` string: Groups related activities triggered by the same operation.
    - `card_definition_id` string, required: ID of the card definition this activity belongs to.
    - `source` CardDefinitionActivitySource: Source that triggered the activity.
      - `channel` 'USER_PORTAL' | 'API' | 'CLIENT_API' | 'INTERNAL': Channel through which the activity was triggered.
      - `user` object: User that triggered the activity. Omitted when not applicable.
        - `id` string: User ID.
      - `api_key` object: API key used to trigger the activity. Omitted when not applicable.
        - `name` string: API key name.
        - `app_id` string: Application ID of the API key.
        - `client_app_id` string: Client application ID of the API key.
  - `cursor` CardDefinitionActivityListCursor, required: Pagination cursor for the activities list.
    - `next` string, required: Cursor ID to pass as the `cursor` query parameter to fetch the next page.
    - `expires_at` string, date-time: Timestamp after which the cursor expires.
  - `object` string, required: Object type marker. Always `list`.

## Other responses

- `400`: Validation error - the request body or query parameters are invalid.
- `404`: Resource not found
- `409`: Conflict - invalid state transition
- `500`: Internal server error

---

[API](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions.md) - [All operations](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions/llms.txt) - [OpenAPI document](https://skmtc.dev/voucherifyio/apis/voucherify-api-async-actions/revisions/4982266e0494?raw)
