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

# Fetch All Redemption Types

> Returns the redemption types the API supports.



## OpenAPI

````yaml GET /collect/redemptions/types
openapi: 3.1.0
info:
  version: 1.0.0
  title: Redemptions API
  description: Redemptions API
  summary: Orchestrates redemption lifecycle against external providers.
  contact:
    name: Moment
    url: https://momentco.net
    email: support@momentco.net
  license:
    name: Proprietary
    url: https://momentco.net/api-terms
servers:
  - url: https://api.momentpay.net
security: []
tags:
  - name: Redemptions
    x-displayName: Redemptions
    description: >-
      A `Redemption` represents a stateful aggregate that clients drive from
      `draft` through `reserved` to `confirmed`, with idempotent POST operations
      against external voucher providers.
  - name: Stored Value
    x-displayName: Stored Value
    description: >-
      Stateless stored value queries against providers (balance lookup, voucher
      metadata).
  - name: Discovery
    x-displayName: Discovery
    description: >-
      Static metadata describing the redemption types the API supports, their
      capabilities, and the `source` attributes each requires. Lets headless
      clients discover supported types dynamically.
  - name: Events
    x-displayName: Events
    description: >
      Outbound CloudEvents v1.0 envelopes emitted on every redemption state
      transition. Delivered via change data capture from the `outbox_events`
      collection to downstream consumers. Subscribers should be idempotent on
      event `id` (at least once delivery).
  - name: Redemption Model
    x-displayName: Redemption Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/redemption" />
  - name: Operation Model
    x-displayName: Operation Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/operation" />
  - name: Change Voucher Model
    x-displayName: Change Voucher Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/change_voucher" />
  - name: CloudEvent Model
    x-displayName: CloudEvent Envelope Model
    description: |
      CloudEvents v1.0 envelope used for all outbound redemption events.

      <SchemaDefinition schemaRef="#/components/schemas/cloudevent_envelope" />
  - name: Problem Detail Model
    x-displayName: Problem Detail Model
    description: >
      RFC 9457 problem details. Returned with `Content-Type:
      application/problem+json` on every error response.


      <SchemaDefinition schemaRef="#/components/schemas/problem_detail" />
externalDocs:
  description: Read the full API documentation
  url: https://momentco.net/docs
paths:
  /collect/redemptions/types:
    get:
      tags:
        - Discovery
      summary: List supported redemption types
      description: Returns the redemption types the API supports.
      operationId: list_redemption_types
      responses:
        '200':
          description: Supported redemption types.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/list_redemption_types_response'
              examples:
                Supported redemption types:
                  $ref: '#/components/examples/list_redemption_types_response'
        '401':
          $ref: '#/components/responses/unauthorized'
        '500':
          $ref: '#/components/responses/internal_server_error'
      security:
        - bearer_auth: []
components:
  schemas:
    list_redemption_types_response:
      title: List Redemption Types Response
      type: object
      description: List of redemption types supported by the API.
      properties:
        data:
          type: array
          description: The supported redemption types.
          items:
            $ref: '#/components/schemas/redemption_type'
      required:
        - data
      additionalProperties: false
    redemption_type:
      title: Redemption Type Descriptor
      type: object
      description: >
        Static description of a supported redemption type, returned by the
        discovery endpoint. Lets a headless client learn which types exist, how
        to brand them, what each can do, and which `source` attributes to
        collect, without hardcoding any of it.
      example:
        type: vouchers.ott
        category: vouchers
        name: OTT
        description: >-
          One Time Token voucher redeemed with a PIN and the subscriber phone
          number.
        logo: https://cdn.momentpay.net/redemptions/ott.svg
        website: https://www.ott.co.za
        capabilities:
          reserve: true
          redeem: true
          refund: false
          lookup: true
          change_voucher: SMS
        required_fields:
          - name: pin
            type: string
            required: true
            sensitive: true
            description: Voucher PIN or token. Sensitive value.
            example: '9988776655443322'
          - name: phone_number
            type: string
            required: true
            sensitive: false
            description: Subscriber phone number associated with the voucher.
            example: '+27821234567'
      properties:
        type:
          $ref: '#/components/schemas/type'
        category:
          $ref: '#/components/schemas/redemption_category'
        name:
          type: string
          description: Human readable display name for the type.
          example: OTT
        description:
          type: string
          description: Short marketing description of the type, suitable for display.
        logo:
          type: string
          format: uri
          description: URL of the type logo asset.
        website:
          type: string
          format: uri
          description: URL of the provider website.
        capabilities:
          $ref: '#/components/schemas/type_capabilities'
        required_fields:
          type: array
          description: >
            Attributes the client supplies inside the `source` object for this
            type. Each entry names a property the `source` object accepts on the
            create redemption and stored value lookup endpoints, so a headless
            client can build and validate the `source` payload directly from
            this list.
          items:
            $ref: '#/components/schemas/source_field'
      required:
        - type
        - category
        - name
        - capabilities
        - required_fields
      additionalProperties: false
    problem_detail:
      type: object
      description: >
        RFC 9457 problem details. Returned with `Content-Type:
        application/problem+json` on every error response.
      required:
        - type
        - title
        - status
        - code
      properties:
        type:
          type: string
          format: uri
          description: A URI reference identifying the problem type.
          example: https://api.momentco.io/problems/resource_not_found
        title:
          type: string
          description: A short, human readable summary of the problem type.
          example: Resource Not Found
        status:
          type: integer
          description: The HTTP status code applicable to this problem.
          example: 404
        detail:
          type: string
          description: A human readable explanation specific to this occurrence.
          example: Redemption rdm_663a1b9c8e4f2a0012abcd34 not found
        instance:
          type: string
          description: A URI reference identifying the specific occurrence (request path).
          example: /collect/redemptions/rdm_663a1b9c8e4f2a0012abcd34
        code:
          type: string
          description: A machine readable code that describes the specific error condition.
          enum:
            - bad_request
            - unauthorized
            - missing_authorization
            - resource_not_found
            - resource_already_exists
            - conflict
            - invalid_state_transition
            - idempotency_conflict
            - operation_not_allowed
            - provider_error
            - service_unavailable
            - request_timeout
            - too_many_requests
            - internal_server_error
          example: resource_not_found
    type:
      title: Redemption Type
      type: string
      description: >
        Namespaced redemption type in `category.type` form. The category selects
        the value class and the suffix selects the specific provider that will
        fulfil the redemption.


        Only the `vouchers` category is available today. Loyalty point
        categories (for example `loyalty_points.skywards`,
        `loyalty_points.ebucks`) are planned.
      enum:
        - vouchers.one_voucher
        - vouchers.ott
        - vouchers.blu
    redemption_category:
      title: Redemption Category
      type: string
      description: >
        Top level value class for a redemption type. The first segment of the
        `category.type` identifier.


        Only `vouchers` is available today. `loyalty_points` is planned.
      enum:
        - vouchers
      example: vouchers
    type_capabilities:
      title: Type Capabilities
      type: object
      description: >
        Operations a redemption type supports. Each flag advertises whether the
        corresponding action is available for this type. A `false` flag means
        the action is rejected for this type.
      properties:
        reserve:
          type: boolean
          description: Whether funds can be held against the provider before capture.
        redeem:
          type: boolean
          description: >-
            Whether the voucher can be captured (confirmed) to consume its
            value.
        refund:
          type: boolean
          description: Whether a captured amount can be reversed back to the provider.
        lookup:
          type: boolean
          description: Whether a stateless stored value lookup is supported for this type.
        change_voucher:
          type: string
          enum:
            - INLINE
            - SMS
            - EMAIL
          description: >
            How a change voucher is delivered when a partial redemption issues
            one:
              - `INLINE`: returned on the redemption in the `change_voucher` field.
              - `SMS`: sent to the subscriber by SMS.
              - `EMAIL`: sent to the subscriber by email.

            Omitted for types that do not issue change vouchers.
      required:
        - reserve
        - redeem
        - refund
        - lookup
      additionalProperties: false
    source_field:
      title: Source Field
      type: object
      description: >
        Descriptor for a single attribute the client supplies inside the
        `source` object when creating a redemption or running a lookup.
      properties:
        name:
          type: string
          description: >-
            Attribute name. Matches the property name accepted inside the
            `source` object.
          example: pin
        type:
          type: string
          enum:
            - string
          description: JSON type of the attribute value.
        required:
          type: boolean
          description: >
            Whether the attribute must always be supplied. Attributes marked
            `false` are optional and may be accepted only for specific
            capabilities, in which case the `description` explains when.
        sensitive:
          type: boolean
          description: >-
            Whether the value is sensitive and must be masked in logs and never
            displayed in clear text.
        description:
          type: string
          description: Human readable explanation of the attribute.
        example:
          type: string
          description: Example value for the attribute.
      required:
        - name
        - type
        - required
      additionalProperties: false
  examples:
    list_redemption_types_response:
      summary: Supported redemption types
      value:
        data:
          - type: vouchers.one_voucher
            category: vouchers
            name: 1Voucher
            description: >-
              South African cash voucher redeemed with a PIN. Captured in a
              single confirm step.
            logo: https://cdn.momentpay.net/redemptions/one_voucher.svg
            website: https://www.1voucher.co.za
            capabilities:
              reserve: true
              redeem: true
              refund: false
              lookup: false
              change_voucher: INLINE
            required_fields:
              - name: pin
                type: string
                required: true
                sensitive: true
                description: 16 digit voucher PIN.
                example: '1115684091419838'
          - type: vouchers.ott
            category: vouchers
            name: OTT
            description: >-
              One Time Token voucher redeemed with a PIN and the subscriber
              phone number.
            logo: https://cdn.momentpay.net/redemptions/ott.svg
            website: https://www.ott.co.za
            capabilities:
              reserve: true
              redeem: true
              refund: false
              lookup: true
              change_voucher: SMS
            required_fields:
              - name: pin
                type: string
                required: true
                sensitive: true
                description: Voucher PIN or token. Sensitive value.
                example: '9988776655443322'
              - name: phone_number
                type: string
                required: true
                sensitive: false
                description: Subscriber phone number associated with the voucher.
                example: '+27821234567'
          - type: vouchers.blu
            category: vouchers
            name: Blu
            description: >-
              Blu Voucher redeemed with a token. Stored value lookup also
              accepts a serial number.
            logo: https://cdn.momentpay.net/redemptions/blu.svg
            website: https://www.bluvoucher.co.za
            capabilities:
              reserve: true
              redeem: true
              refund: false
              lookup: true
              change_voucher: INLINE
            required_fields:
              - name: token
                type: string
                required: true
                sensitive: true
                description: Blu voucher token or PIN. Sensitive value.
                example: 8276 8409 4119 1701
              - name: serial_number
                type: string
                required: false
                sensitive: false
                description: >-
                  Blu voucher serial number. Optional. Accepted for stored value
                  lookup only, where either token or serial number is
                  sufficient.
                example: BL016C1E46AD2768
  responses:
    unauthorized:
      description: Authentication required.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem_detail'
          example:
            type: https://api.momentco.io/problems/unauthorized
            title: Unauthorized
            status: 401
            detail: The API key provided is invalid.
            instance: /collect/redemptions
            code: unauthorized
    internal_server_error:
      description: Unexpected server error.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem_detail'
          example:
            type: https://api.momentco.io/problems/internal_server_error
            title: Internal Server Error
            status: 500
            detail: An unexpected error occurred. Please try again later.
            instance: /collect/redemptions
            code: internal_server_error
  securitySchemes:
    bearer_auth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >
        Authentication using Bearer tokens. Include your API key in the
        Authorization header.


        **Key Types:**

        - **Test Keys**: `sk_test_*` for development and testing

        - **Live Keys**: `sk_*` for production environments

        - **Public Keys**: `pk_test_*` or `pk_*` for client-side operations



        > 📩 **Need access?** [Contact Support](/documentation/support) to
        request your API keys.



        **Usage:**

        ```http

        Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc

        ```

````