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

# Get a catalog voucher

> `view_vouchers` permission required.

All successful responses include `X-Request-Id` and `Cache-Control: private, no-store`. Requests are limited to 120 per minute.



## OpenAPI

````yaml /openapi.json get /tenants/{tenant}/catalog/vouchers/{product}
openapi: 3.1.0
info:
  title: Gift Voucher Brilliance External API
  version: 1.0.0
  description: >-
    Read-only synchronisation and controlled voucher redemption for approved
    integrations. All operations require a bearer token. The API is limited to
    120 requests per minute per token/IP combination.
  contact:
    name: Gift Voucher Brilliance Support
    url: https://docs.giftvoucherbrilliance.co.uk/support
servers:
  - url: https://app.giftvoucherbrilliance.co.uk/api/external/v1
    description: Production
  - url: https://app.gvb-staging.co.uk/api/external/v1
    description: Staging
  - url: https://app.gvb.test/api/external/v1
    description: Local
security:
  - bearerAuth: []
tags:
  - name: Tenants
    description: Discover tenants available to the token.
  - name: Catalog
    description: Synchronise voucher products and categories.
  - name: Sales
    description: Synchronise purchased vouchers and balances.
  - name: Customers
    description: Export customers who opted in to marketing.
  - name: Redemptions
    description: Resolve, validate, and redeem vouchers.
paths:
  /tenants/{tenant}/catalog/vouchers/{product}:
    get:
      tags:
        - Catalog
      summary: Get a catalog voucher
      description: >-
        `view_vouchers` permission required.


        All successful responses include `X-Request-Id` and `Cache-Control:
        private, no-store`. Requests are limited to 120 per minute.
      operationId: getCatalogVoucher
      parameters:
        - name: tenant
          in: path
          required: true
          description: Authorised tenant identifier from the tenant directory.
          schema:
            type: integer
        - name: product
          in: path
          required: true
          description: Catalog voucher product identifier.
          schema:
            type: integer
        - name: Accept
          in: header
          required: true
          description: Must be `application/json`.
          schema:
            type: string
            enum:
              - application/json
          example: application/json
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogVoucherItem'
          headers:
            X-Request-Id:
              description: Request correlation identifier.
              schema:
                type: string
            Cache-Control:
              description: Sensitive responses are not shared or stored.
              schema:
                type: string
              example: private, no-store
        '401':
          description: Unauthenticated or invalid bearer token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageError'
        '403':
          description: Token lacks the required tenant access or permission.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageError'
        '404':
          description: Resource or tenant was not found in the authorised scope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageError'
        '422':
          description: Request validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
        '429':
          description: Rate limit exceeded. Retry after the window resets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MessageError'
components:
  schemas:
    CatalogVoucherItem:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CatalogVoucher'
      required:
        - data
      title: CatalogVoucherItem
    MessageError:
      type: object
      properties:
        message:
          type: string
      required:
        - message
      title: MessageError
    ValidationError:
      type: object
      properties:
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      required:
        - message
        - errors
      title: ValidationError
    CatalogVoucher:
      type: object
      properties:
        id:
          type: integer
        slug:
          type: string
        title:
          type: string
        summary:
          type:
            - string
            - 'null'
        description_html:
          type:
            - string
            - 'null'
        currency:
          type: string
        price:
          type:
            - number
            - 'null'
          description: Product price in major currency units (for example 25.00 GBP).
        sale_price:
          type:
            - number
            - 'null'
          description: Product price in major currency units (for example 25.00 GBP).
        from_price:
          type:
            - number
            - 'null'
          description: Product price in major currency units (for example 25.00 GBP).
        from_sale_price:
          type:
            - number
            - 'null'
          description: Product price in major currency units (for example 25.00 GBP).
        monetary_value:
          type:
            - number
            - 'null'
          description: Product price in major currency units (for example 25.00 GBP).
        is_monetary:
          type: boolean
        allow_part_redeem:
          type: boolean
        validity_type:
          type: string
        validity_months:
          type:
            - integer
            - 'null'
        redemption_info:
          type:
            - string
            - 'null'
        sort_order:
          type: integer
        image_url:
          type:
            - string
            - 'null'
        image_urls:
          type: array
          items:
            type: string
        category_refs:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              slug:
                type: string
              title:
                type: string
              sort_order:
                type: integer
            required:
              - id
              - slug
              - title
              - sort_order
        variant_summaries:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              slug:
                type: string
              title:
                type: string
              price:
                type:
                  - number
                  - 'null'
                description: Product price in major currency units (for example 25.00 GBP).
              sale_price:
                type:
                  - number
                  - 'null'
                description: Product price in major currency units (for example 25.00 GBP).
              currency:
                type: string
              is_monetary:
                type: boolean
              sort_order:
                type: integer
              updated_at:
                type:
                  - string
                  - 'null'
                format: date-time
                description: ISO-8601 timestamp.
            required:
              - id
              - slug
              - title
              - price
              - sale_price
              - currency
              - is_monetary
              - sort_order
              - updated_at
        categories:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              slug:
                type: string
              title:
                type: string
              sort_order:
                type: integer
            required:
              - id
              - slug
              - title
              - sort_order
        variants:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              slug:
                type: string
              title:
                type: string
              price:
                type:
                  - number
                  - 'null'
                description: Product price in major currency units (for example 25.00 GBP).
              sale_price:
                type:
                  - number
                  - 'null'
                description: Product price in major currency units (for example 25.00 GBP).
              currency:
                type: string
              is_monetary:
                type: boolean
              sort_order:
                type: integer
              updated_at:
                type:
                  - string
                  - 'null'
                format: date-time
                description: ISO-8601 timestamp.
            required:
              - id
              - slug
              - title
              - price
              - sale_price
              - currency
              - is_monetary
              - sort_order
              - updated_at
        updated_at:
          type:
            - string
            - 'null'
          format: date-time
          description: ISO-8601 timestamp.
      required:
        - id
        - slug
        - title
        - currency
        - is_monetary
        - allow_part_redeem
        - sort_order
        - image_urls
        - category_refs
        - variant_summaries
        - updated_at
      title: CatalogVoucher
  securitySchemes:
    bearerAuth:
      type: http
      description: Bearer token created in the GVB API Access page.
      scheme: bearer

````