Light v1 - Cards API

The v1 - Cards API from Light — 4 operation(s) for v1 - cards.

OpenAPI Specification

light-v1-cards-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Light Authorization v1 - Cards API
  version: 1.0.0
security:
- apiKeyAuth: []
- bearerAuth: []
tags:
- name: v1 - Cards
paths:
  /v1/cards:
    get:
      tags:
      - v1 - Cards
      summary: List cards
      description: Returns a paginated list of cards
      operationId: listCards
      parameters:
      - name: sort
        in: query
        schema:
          type: string
          description: "Sort string in the format `field:direction`. To provide multiple sort fields, separate them with commas.\n\nAvailable directions: `asc`, `desc`. \n\nAvailable fields: `accountId`, `status`, `createdAt`."
          example: amount:desc,createdAt:asc
      - name: filter
        in: query
        schema:
          type: string
          description: "Filter string in the format `field:operator:value`. To provide multiple filters, separate them with commas.\n\nAvailable operators: `eq`, `ne`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`.\n - For `in` and `not_in` operators, provide multiple values separated by the pipe character (`|`). \n\nAvailable fields: `id`, `cardBalanceAccountId`, `status`, `type`, `createdAt`, `updatedAt`."
          example: state:in:IN_DRAFT|SCHEDULED|PAID,amount:gte:500,vendorId:ne:null
      - name: limit
        in: query
        description: Maximum number of items to return. Default is 50, maximum is 200.
        schema:
          maximum: 200
          type: integer
          format: int32
      - name: offset
        in: query
        description: Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.
        deprecated: true
        schema:
          type: integer
          format: int64
      - name: cursor
        in: query
        description: 'The cursor position to start returning results from.

          To opt-in into cursor-based pagination, provide `0` for the initial request.

          For subsequent requests, use `nextCursor` and `prevCursor` from the previous response to navigate.

          Cursor values are opaque and should not be constructed manually.'
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ExternalPaginatedResponseV1ModelExternalBffCardV1Model'
    post:
      tags:
      - v1 - Cards
      summary: Create card
      description: Creates a new card. Use metadata type 'VENDOR' for vendor cards or 'EMPLOYEE' for employee cards.
      operationId: createCard
      parameters:
      - name: X-Idempotency-Key
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/ExternalCreateCardRequestV1Model'
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ExternalCardV1Model'
  /v1/cards/{cardId}/freeze:
    post:
      tags:
      - v1 - Cards
      summary: Freeze card
      description: Freezes a card to block transactions
      operationId: freezeCard
      parameters:
      - name: X-Idempotency-Key
        in: header
        schema:
          type: string
      - name: cardId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ExternalCardV1Model'
  /v1/cards/{cardId}:
    get:
      tags:
      - v1 - Cards
      summary: Get card
      description: Returns a card by ID
      operationId: getCard
      parameters:
      - name: cardId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ExternalBffCardV1Model'
  /v1/cards/{cardId}/unfreeze:
    post:
      tags:
      - v1 - Cards
      summary: Unfreeze card
      description: Unfreezes a card to allow transactions. For physical cards, this confirms the cardholder is in possession of the card.
      operationId: unfreezeCard
      parameters:
      - name: X-Idempotency-Key
        in: header
        schema:
          type: string
      - name: cardId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ExternalCardV1Model'
components:
  schemas:
    ExternalPaginatedResponseV1ModelExternalBffCardV1Model:
      type: object
      properties:
        records:
          type: array
          description: List of records for the current page
          items:
            $ref: '#/components/schemas/ExternalBffCardV1Model'
        hasMore:
          type: boolean
          description: Boolean flag indicating if there are more records available
        total:
          type: integer
          description: Total number of records (only for offset pagination). This field is not guaranteed to be returned and only available for offset pagination, please do not rely on it and migrate to cursor pagination.
          format: int64
          nullable: true
          deprecated: true
        nextCursor:
          type: string
          description: Cursor for fetching the next page (only for cursor pagination)
          nullable: true
        prevCursor:
          type: string
          description: Cursor for fetching the previous page (only for cursor pagination)
          nullable: true
    ExternalCardDeliveryAddressV1Model:
      type: object
      properties:
        street:
          type: string
          description: Street name (maps to Adyen `address.line1`).
        houseNumberOrName:
          type: string
          description: House number, building, apartment, or suite (maps to Adyen `address.line2`).
        city:
          type: string
          description: City.
        postalCode:
          type: string
          description: Postal or ZIP code.
        country:
          type: string
          description: 'ISO 3166-1 alpha-2 country code (e.g. `DK`, `US`, `GB`).


            ⚠️ This enum is not exhaustive; new values may be added in the future.'
          nullable: false
          deprecated: false
          enum:
          - UNDEFINED
          - AC
          - AD
          - AE
          - AF
          - AG
          - AI
          - AL
          - AM
          - AN
          - AO
          - AQ
          - AR
          - AS
          - AT
          - AU
          - AW
          - AX
          - AZ
          - BA
          - BB
          - BD
          - BE
          - BF
          - BG
          - BH
          - BI
          - BJ
          - BL
          - BM
          - BN
          - BO
          - BQ
          - BR
          - BS
          - BT
          - BU
          - BV
          - BW
          - BY
          - BZ
          - CA
          - CC
          - CD
          - CF
          - CG
          - CH
          - CI
          - CK
          - CL
          - CM
          - CN
          - CO
          - CP
          - CR
          - CS
          - CU
          - CV
          - CW
          - CX
          - CY
          - CZ
          - DE
          - DG
          - DJ
          - DK
          - DM
          - DO
          - DZ
          - EA
          - EC
          - EE
          - EG
          - EH
          - ER
          - ES
          - ET
          - EU
          - EZ
          - FI
          - FJ
          - FK
          - FM
          - FO
          - FR
          - FX
          - GA
          - GB
          - GD
          - GE
          - GF
          - GG
          - GH
          - GI
          - GL
          - GM
          - GN
          - GP
          - GQ
          - GR
          - GS
          - GT
          - GU
          - GW
          - GY
          - HK
          - HM
          - HN
          - HR
          - HT
          - HU
          - IC
          - ID
          - IE
          - IL
          - IM
          - IN
          - IO
          - IQ
          - IR
          - IS
          - IT
          - JE
          - JM
          - JO
          - JP
          - KE
          - KG
          - KH
          - KI
          - KM
          - KN
          - KP
          - KR
          - KW
          - KY
          - KZ
          - LA
          - LB
          - LC
          - LI
          - LK
          - LR
          - LS
          - LT
          - LU
          - LV
          - LY
          - MA
          - MC
          - MD
          - ME
          - MF
          - MG
          - MH
          - MK
          - ML
          - MM
          - MN
          - MO
          - MP
          - MQ
          - MR
          - MS
          - MT
          - MU
          - MV
          - MW
          - MX
          - MY
          - MZ
          - NA
          - NC
          - NE
          - NF
          - NG
          - NI
          - NL
          - 'NO'
          - NP
          - NR
          - NT
          - NU
          - NZ
          - OM
          - PA
          - PE
          - PF
          - PG
          - PH
          - PK
          - PL
          - PM
          - PN
          - PR
          - PS
          - PT
          - PW
          - PY
          - QA
          - RE
          - RO
          - RS
          - RU
          - RW
          - SA
          - SB
          - SC
          - SD
          - SE
          - SF
          - SG
          - SH
          - SI
          - SJ
          - SK
          - SL
          - SM
          - SN
          - SO
          - SR
          - SS
          - ST
          - SU
          - SV
          - SX
          - SY
          - SZ
          - TA
          - TC
          - TD
          - TF
          - TG
          - TH
          - TJ
          - TK
          - TL
          - TM
          - TN
          - TO
          - TP
          - TR
          - TT
          - TV
          - TW
          - TZ
          - UA
          - UG
          - UK
          - UM
          - US
          - UY
          - UZ
          - VA
          - VC
          - VE
          - VG
          - VI
          - VN
          - VU
          - WF
          - WS
          - XI
          - XU
          - XK
          - YE
          - YT
          - YU
          - ZA
          - ZM
          - ZR
          - ZW
        stateOrProvince:
          type: string
          description: State, province, or region. **Required** when `country` is `US` or `CA`; requests without it are rejected with `PHYSICAL_CARD_STATE_OR_PROVINCE_REQUIRED`. Optional for other countries.
          nullable: true
      description: Postal address the card is shipped to. Country must be an ISO 3166-1 alpha-2 code; `stateOrProvince` is required for US and CA destinations.
    ExternalCardAuthenticationV1Model:
      type: object
      properties:
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        email:
          type: string
          description: Email address for 3D Secure authentication.
          nullable: true
      description: 3D Secure authentication details for the card.
    ExternalCreateCardLimitRequestV1Model:
      type: object
      properties:
        amount:
          type: integer
          description: Spending limit amount in minor units (e.g., cents).
          format: int64
        currency:
          type: string
          example: USD
        interval:
          type: string
          description: 'Interval for the spending limit (PER_TRANSACTION, WEEKLY, or MONTHLY).


            ⚠️ This enum is not exhaustive; new values may be added in the future.'
          nullable: false
          deprecated: false
          enum:
          - PER_TRANSACTION
          - WEEKLY
          - MONTHLY
      description: Optional spending limits for this card.
      nullable: true
    ExternalCreateCardMetadataV1Model:
      type: object
      properties:
        type:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - VENDOR
          - EMPLOYEE
      description: Card type metadata. Use type 'VENDOR' with vendorId for vendor cards, or type 'EMPLOYEE' with employeeId for employee cards.
      discriminator:
        propertyName: type
    ExternalCardLimitV1Model:
      type: object
      properties:
        id:
          type: string
          format: uuid
        companyId:
          type: string
          format: uuid
        cardId:
          type: string
          format: uuid
        amount:
          type: integer
          format: int64
        currency:
          type: string
          example: USD
        interval:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - PER_TRANSACTION
          - WEEKLY
          - MONTHLY
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    PhoneNumber:
      type: object
      properties:
        countryCode:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - UNDEFINED
          - AC
          - AD
          - AE
          - AF
          - AG
          - AI
          - AL
          - AM
          - AN
          - AO
          - AQ
          - AR
          - AS
          - AT
          - AU
          - AW
          - AX
          - AZ
          - BA
          - BB
          - BD
          - BE
          - BF
          - BG
          - BH
          - BI
          - BJ
          - BL
          - BM
          - BN
          - BO
          - BQ
          - BR
          - BS
          - BT
          - BU
          - BV
          - BW
          - BY
          - BZ
          - CA
          - CC
          - CD
          - CF
          - CG
          - CH
          - CI
          - CK
          - CL
          - CM
          - CN
          - CO
          - CP
          - CR
          - CS
          - CU
          - CV
          - CW
          - CX
          - CY
          - CZ
          - DE
          - DG
          - DJ
          - DK
          - DM
          - DO
          - DZ
          - EA
          - EC
          - EE
          - EG
          - EH
          - ER
          - ES
          - ET
          - EU
          - EZ
          - FI
          - FJ
          - FK
          - FM
          - FO
          - FR
          - FX
          - GA
          - GB
          - GD
          - GE
          - GF
          - GG
          - GH
          - GI
          - GL
          - GM
          - GN
          - GP
          - GQ
          - GR
          - GS
          - GT
          - GU
          - GW
          - GY
          - HK
          - HM
          - HN
          - HR
          - HT
          - HU
          - IC
          - ID
          - IE
          - IL
          - IM
          - IN
          - IO
          - IQ
          - IR
          - IS
          - IT
          - JE
          - JM
          - JO
          - JP
          - KE
          - KG
          - KH
          - KI
          - KM
          - KN
          - KP
          - KR
          - KW
          - KY
          - KZ
          - LA
          - LB
          - LC
          - LI
          - LK
          - LR
          - LS
          - LT
          - LU
          - LV
          - LY
          - MA
          - MC
          - MD
          - ME
          - MF
          - MG
          - MH
          - MK
          - ML
          - MM
          - MN
          - MO
          - MP
          - MQ
          - MR
          - MS
          - MT
          - MU
          - MV
          - MW
          - MX
          - MY
          - MZ
          - NA
          - NC
          - NE
          - NF
          - NG
          - NI
          - NL
          - 'NO'
          - NP
          - NR
          - NT
          - NU
          - NZ
          - OM
          - PA
          - PE
          - PF
          - PG
          - PH
          - PK
          - PL
          - PM
          - PN
          - PR
          - PS
          - PT
          - PW
          - PY
          - QA
          - RE
          - RO
          - RS
          - RU
          - RW
          - SA
          - SB
          - SC
          - SD
          - SE
          - SF
          - SG
          - SH
          - SI
          - SJ
          - SK
          - SL
          - SM
          - SN
          - SO
          - SR
          - SS
          - ST
          - SU
          - SV
          - SX
          - SY
          - SZ
          - TA
          - TC
          - TD
          - TF
          - TG
          - TH
          - TJ
          - TK
          - TL
          - TM
          - TN
          - TO
          - TP
          - TR
          - TT
          - TV
          - TW
          - TZ
          - UA
          - UG
          - UK
          - UM
          - US
          - UY
          - UZ
          - VA
          - VC
          - VE
          - VG
          - VI
          - VN
          - VU
          - WF
          - WS
          - XI
          - XU
          - XK
          - YE
          - YT
          - YU
          - ZA
          - ZM
          - ZR
          - ZW
        localNumber:
          type: string
      description: Vendor phone number.
      nullable: true
    ExternalCard3DsMetadataV1Model:
      type: object
      properties:
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        password:
          type: string
        email:
          type: string
    ExternalCardV1Model:
      type: object
      properties:
        id:
          type: string
          format: uuid
        companyEntityId:
          type: string
          format: uuid
        companyId:
          type: string
          format: uuid
        ownerId:
          type: string
          format: uuid
        cardBalanceAccountId:
          type: string
          format: uuid
        form:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - PHYSICAL
          - VIRTUAL
        status:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - ACTIVE
          - FROZEN
          - CLOSED
          - UPDATE_IN_PROGRESS
        metadata:
          $ref: '#/components/schemas/ExternalCardMetadataV1Model'
        threeDs:
          $ref: '#/components/schemas/ExternalCard3DsMetadataV1Model'
        description:
          type: string
        bin:
          type: string
        lastFour:
          type: string
        cardholderName:
          type: string
        limits:
          type: array
          items:
            $ref: '#/components/schemas/ExternalCardLimitV1Model'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        type:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - VENDOR
          - EMPLOYEE
    ExternalCreateCardRequestV1Model:
      type: object
      properties:
        balanceAccountId:
          type: string
          description: ID of the card balance account to associate with this card.
          format: uuid
        ownerId:
          type: string
          description: ID of the user who will own/manage this card.
          format: uuid
        metadata:
          $ref: '#/components/schemas/ExternalCreateCardMetadataV1Model'
        description:
          type: string
          description: Optional description or memo for this card.
          nullable: true
        authentication:
          $ref: '#/components/schemas/ExternalCardAuthenticationV1Model'
        limits:
          type: array
          description: Optional spending limits for this card.
          nullable: true
          items:
            $ref: '#/components/schemas/ExternalCreateCardLimitRequestV1Model'
        formFactor:
          type: string
          description: 'Card form factor. Defaults to `VIRTUAL` when omitted. `PHYSICAL` ships a plastic card and requires `deliveryContact` to be set. `VIRTUAL` must be sent with `deliveryContact` left null. Mismatches are rejected with `PHYSICAL_CARD_DELIVERY_CONTACT_REQUIRED` or `VIRTUAL_CARD_DELIVERY_CONTACT_NOT_ALLOWED`.


            ⚠️ This enum is not exhaustive; new values may be added in the future.'
          nullable: true
          deprecated: false
          enum:
          - PHYSICAL
          - VIRTUAL
        deliveryContact:
          $ref: '#/components/schemas/ExternalCardDeliveryContactV1Model'
    ExternalCardDeliveryContactV1Model:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/ExternalCardDeliveryAddressV1Model'
        name:
          $ref: '#/components/schemas/ExternalCardDeliveryContactNameV1Model'
        company:
          type: string
          description: Company or department name on the shipping label.
          nullable: true
        email:
          type: string
          description: Contact email for delivery notifications.
          nullable: true
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
      description: Recipient and address used by the card issuer to ship the physical card. Only `address` and `name` are required.
      nullable: true
    ExternalBffCardV1Model:
      type: object
      properties:
        id:
          type: string
          format: uuid
        companyEntityId:
          type: string
          format: uuid
        companyEntityName:
          type: string
        companyId:
          type: string
          format: uuid
        ownerId:
          type: string
          format: uuid
        ownerName:
          type: string
        cardBalanceAccountId:
          type: string
          format: uuid
        cardBalanceAccountLabel:
          type: string
        currency:
          type: string
          example: USD
        form:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - PHYSICAL
          - VIRTUAL
        status:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - ACTIVE
          - FROZEN
          - CLOSED
          - UPDATE_IN_PROGRESS
        metadata:
          $ref: '#/components/schemas/ExternalCardMetadataV1Model'
        threeDs:
          $ref: '#/components/schemas/ExternalCard3DsMetadataV1Model'
        vendorId:
          type: string
          format: uuid
        vendorName:
          type: string
        vendorAvatarUrl:
          type: string
        description:
          type: string
        bin:
          type: string
        lastFour:
          type: string
        cardholderName:
          type: string
        limitIntervalSpend:
          type: integer
          format: int64
        limits:
          type: array
          items:
            $ref: '#/components/schemas/ExternalCardLimitV1Model'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        type:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - VENDOR
          - EMPLOYEE
      description: List of records for the current page
    ExternalCardDeliveryContactNameV1Model:
      type: object
      properties:
        firstName:
          type: string
          description: Recipient first name.
        lastName:
          type: string
          description: Recipient last name.
      description: Name printed on the shipping label.
    ExternalCardMetadataV1Model:
      type: object
      properties:
        type:
          type: string
          description: ⚠️ This enum is not exhaustive; new values may be added in the future.
          enum:
          - VENDOR
          - EMPLOYEE
      discriminator:
        propertyName: type
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: Basic authentication header of the form **Basic** **<api_key>**, where **<api_key>** is your api key.
      name: Authorization
      in: header
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT