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

# List the catalog's top-level universes.



## OpenAPI

````yaml /program/api/openapi/2.0.0/perks/openapi.json get /perks/consumers/{consumer_id}/universes
openapi: 3.1.0
info:
  description: |
    Paylead Program API.
    You can find complete documentation in https://docs.paylead.fr/
  license:
    name: Proprietary
    url: https://docs.paylead.fr/
  title: Perks
  version: 2.0.0
servers:
  - description: Sandbox
    url: https://api-{programRef}.sandbox.paylead.tech
    variables:
      programRef:
        default: changeme
        description: Program reference provided by Paylead
security:
  - oauth2: []
tags:
  - name: Brands
    x-displayName: Brands
  - description: Routes used to query consumers resources
    name: Consumers
    x-displayName: Consumers
  - name: UPM
    x-displayName: UPM
  - name: KYC
    x-displayName: KYC
  - name: Offers
    x-displayName: Offers
  - name: Rewards
    x-displayName: Rewards
  - name: Segments
    x-displayName: Segments
  - name: Universes
    x-displayName: Universes
  - name: Voucher Orders
    x-displayName: Voucher Orders
paths:
  /perks/consumers/{consumer_id}/universes:
    get:
      tags:
        - Universes
      summary: List the catalog's top-level universes.
      operationId: perks__consumers__consumer_id__universes__get
      parameters:
        - in: path
          name: consumer_id
          required: true
          schema:
            example: consumer-12345
            examples:
              - consumer-12345
            maxLength: 100
            minLength: 2
            pattern: ^[a-zA-Z0-9_-]+$
            title: Consumer Id
            type: string
        - in: query
          name: page
          required: false
          schema:
            default: 1
            minimum: 1
            title: Page
            type: integer
        - in: query
          name: per_page
          required: false
          schema:
            default: 50
            maximum: 1000
            minimum: 1
            title: Per Page
            type: integer
        - description: >-
            Sort field, prefixed by `-` for descending (e.g.
            `-active_brands_count`). `active_brands_count` orders on the brand
            count reported at the top level, so the order matches what the
            payload shows — `-active_brands_count` puts the richest universes
            first; universes sharing a count keep their name order. `name`
            orders alphabetically, `-name` reverses it. Omit to keep the
            catalog's universe-name order.
          in: query
          name: sort
          required: false
          schema:
            anyOf:
              - enum:
                  - name
                  - '-name'
                  - active_brands_count
                  - '-active_brands_count'
                example: name
                type: string
              - type: 'null'
            description: >-
              Sort field, prefixed by `-` for descending (e.g.
              `-active_brands_count`). `active_brands_count` orders on the brand
              count reported at the top level, so the order matches what the
              payload shows — `-active_brands_count` puts the richest universes
              first; universes sharing a count keep their name order. `name`
              orders alphabetically, `-name` reverses it. Omit to keep the
              catalog's universe-name order.
            example: '-active_brands_count'
            examples:
              - '-active_brands_count'
            title: Sort
        - examples:
            default:
              value: 2.0.0
          in: header
          name: x-api-version
          required: true
          schema:
            default: 2.0.0
            title: X-Api-Version
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Perks_Page_RootUniverseSchema_'
          description: Successful Response
        '400':
          content:
            application/json:
              example:
                code: PL-400-00
                errors:
                  - loc:
                      - body
                      - field
                    msg: Field required
                    type: missing
                instance: /path/of/the/request
                status: 400
                title: Bad Request
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                PL-401-00:
                  summary: Unauthorized
                  value:
                    code: PL-401-00
                    status: 401
                    title: Unauthorized
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '404':
          content:
            application/json:
              examples:
                PL-404-02:
                  summary: Consumer Not Enrolled
                  value:
                    code: PL-404-02
                    status: 404
                    title: Consumer Not Enrolled
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Not Found
components:
  schemas:
    Perks_Page_RootUniverseSchema_:
      properties:
        items:
          items:
            $ref: '#/components/schemas/Perks_RootUniverseSchema'
          title: Items
          type: array
        meta:
          $ref: '#/components/schemas/Perks_PageMeta'
      required:
        - items
        - meta
      title: Page[RootUniverseSchema]
      type: object
    ErrorResponse:
      additionalProperties: false
      description: >-
        An error response object (PayLead profile).


        Extension members (e.g. ``errors`` for validation) are allowed and
        serialised as

        top-level keys.
      properties:
        code:
          description: Error code describing the issue
          example: PL-4XX-YY
          title: Code
          type: string
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          default: null
          description: A list of individual error occurrences found
          example:
            - loc:
                - body
                - field
              msg: Field required
              type: missing
          title: Errors
        instance:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: A URI reference to the problematic resource
          example: api/resource/424242
          title: Instance
        status:
          description: HTTP code returned by the API
          example: 400
          title: Status
          type: integer
        title:
          description: Description of the issue
          example: The request was invalid.
          title: Title
          type: string
      required:
        - code
        - title
        - status
      title: ErrorResponse
      type: object
    Perks_RootUniverseSchema:
      properties:
        active_brands_count:
          description: >-
            How many distinct brands in this universe - or in any of its
            sub-universes - this consumer can buy from: brands carrying a
            currently active offer they were targeted for, plus brands carrying
            an active voucher offer whose audience they are in, vouchers needing
            no individual targeting. Matches what the brands listing returns for
            the same universe. Counts a brand once however many universes of the
            subtree it belongs to, and however many offers it carries. Broader
            than `active_offers`, which counts only what was aimed at this
            consumer - a universe holding only untargeted vouchers reports
            `false` with a non-zero count.
          example: 12
          examples:
            - 12
          title: Active Brands Count
          type: integer
        active_offers:
          description: >-
            True when at least one brand in this universe - or in any of its
            sub-universes - has an offer that is currently active and that this
            consumer has been targeted for.
          example: true
          examples:
            - true
          title: Active Offers
          type: boolean
        id:
          example: 8f14e45f-ceea-467a-9e1b-2c8f9a0d1e23
          examples:
            - 8f14e45f-ceea-467a-9e1b-2c8f9a0d1e23
          format: uuid
          title: Id
          type: string
        name:
          example: Fashion
          examples:
            - Fashion
          title: Name
          type: string
      required:
        - id
        - name
        - active_offers
        - active_brands_count
      title: RootUniverseSchema
      type: object
    Perks_PageMeta:
      properties:
        page:
          example: 1
          examples:
            - 1
          title: Page
          type: integer
        per_page:
          example: 50
          examples:
            - 50
          title: Per Page
          type: integer
        total:
          example: 137
          examples:
            - 137
          title: Total
          type: integer
      required:
        - page
        - per_page
        - total
      title: PageMeta
      type: object
  securitySchemes:
    oauth2:
      flows:
        clientCredentials:
          scopes:
            ALL: Full access to all resources (wildcard).
            LOYALTIES: Access to loyalties features.
            PERKS: Access to perks features.
            TX_INJECTION: Access to transaction sharing.
          tokenUrl: /tokens
      type: oauth2

````