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

# List tenant products

> Referencia detallada para GET /v1/products.

## Uso

Usalo para administrar productos del tenant, ofertas, disponibilidad o inventario empresarial asociado al catalogo SimplePay.

## Antes de llamar

| Tema             | Detalle                                           |
| ---------------- | ------------------------------------------------- |
| Metodo           | `GET`                                             |
| Ruta             | `/v1/products`                                    |
| Auth             | Bearer API key del ambiente correcto.             |
| Scope            | `products:read`                                   |
| Idempotencia     | No aplica para lecturas.                          |
| Guia relacionada | [API Reference overview](/api-reference/overview) |

## Patron recomendado

* Ejecuta esta lectura desde backend cuando incluya datos privados del tenant.
* Consulta el bloque OpenAPI de esta pagina para el shape exacto de parametros, body y respuestas.

## Ejemplo minimo

```bash terminal theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -sS "https://api.simplepay.mx/v1/products" \
  -H "Authorization: Bearer $SIMPLEPAY_API_KEY"
```

## Errores a manejar

* `400` indica payload, parametros o estado invalido.
* `401` o `403` indican API key, ambiente o scopes incorrectos.
* `429` y `5xx` se pueden reintentar con backoff; en writes conserva la misma idempotency key.

## Contrato OpenAPI

El playground, parametros, body y respuestas de abajo salen de `/openapi.json`. Si el contrato cambia, actualiza la spec y regenera esta pagina.


## OpenAPI

````yaml openapi.json GET /v1/products
openapi: 3.1.0
info:
  title: SimplePay API
  version: '2026-06-13'
servers:
  - url: https://api.simplepay.mx
security:
  - SimplePayApiKey: []
paths:
  /v1/products:
    get:
      summary: List tenant products
      operationId: listProducts
      parameters:
        - name: locale
          in: query
          schema:
            enum:
              - es
              - en
              - pt
              - de
              - fr
              - zh-Hans
              - zh
              - zh-hans
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: cursor
          in: query
          schema:
            type: string
        - name: include_archived
          in: query
          schema:
            type: boolean
        - name: expand[]
          in: query
          style: form
          explode: true
          schema:
            type: array
            items:
              enum:
                - data.default_price
      responses:
        '200':
          description: Tenant products
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductListResponse'
components:
  schemas:
    ProductListResponse:
      type: object
      properties:
        object:
          const: list
        url:
          const: /v1/products
        has_more:
          type: boolean
        data:
          type: array
          items:
            $ref: '#/components/schemas/SimplePayCompatibleProduct'
    SimplePayCompatibleProduct:
      type: object
      properties:
        id:
          type: string
          format: uuid
        object:
          const: product
        active:
          type: boolean
        created:
          type: integer
        default_price:
          anyOf:
            - type: string
              format: uuid
            - $ref: '#/components/schemas/SimplePayCompatiblePrice'
            - type: 'null'
        description:
          type:
            - string
            - 'null'
        images:
          type: array
          items:
            type: string
        marketing_features:
          type: array
          items:
            type: object
            properties:
              name:
                type:
                  - string
                  - 'null'
        livemode:
          type: boolean
        metadata:
          type: object
          additionalProperties: true
        name:
          type: string
        package_dimensions:
          type:
            - object
            - 'null'
          additionalProperties: true
        shippable:
          type:
            - boolean
            - 'null'
        statement_descriptor:
          type:
            - string
            - 'null'
        tax_code:
          type:
            - string
            - 'null'
        tax_details:
          type:
            - object
            - 'null'
          properties:
            performance_location:
              type:
                - string
                - 'null'
            tax_code:
              type: string
        unit_label:
          type:
            - string
            - 'null'
        updated:
          type: integer
        url:
          type:
            - string
            - 'null'
        cms:
          $ref: '#/components/schemas/ProductCms'
    SimplePayCompatiblePrice:
      type: object
      properties:
        id:
          type: string
          format: uuid
        object:
          const: price
        active:
          type: boolean
        billing_scheme:
          enum:
            - per_unit
            - tiered
        created:
          type: integer
        currency:
          type: string
          pattern: ^[a-z]{3}$
        custom_unit_amount:
          type:
            - object
            - 'null'
          additionalProperties: true
        livemode:
          type: boolean
        lookup_key:
          type:
            - string
            - 'null'
        metadata:
          type: object
          additionalProperties: true
        nickname:
          type:
            - string
            - 'null'
        product:
          type: string
          format: uuid
        recurring:
          type:
            - object
            - 'null'
          properties:
            interval:
              enum:
                - day
                - week
                - month
                - year
            interval_count:
              type: integer
              minimum: 1
            trial_period_days:
              type:
                - integer
                - 'null'
              minimum: 0
            usage_type:
              enum:
                - licensed
                - metered
        tax_behavior:
          enum:
            - exclusive
            - inclusive
            - unspecified
        tiers_mode:
          type:
            - string
            - 'null'
          enum:
            - graduated
            - volume
            - null
        transform_quantity:
          type:
            - object
            - 'null'
          additionalProperties: true
        type:
          enum:
            - one_time
            - recurring
        unit_amount:
          type:
            - integer
            - 'null'
          minimum: 0
        unit_amount_decimal:
          type:
            - string
            - 'null'
    ProductCms:
      type: object
      additionalProperties: false
      properties:
        locale:
          enum:
            - es
            - en
            - pt
            - de
            - fr
            - zh-Hans
        categories:
          type: array
          items:
            $ref: '#/components/schemas/CatalogCategory'
        primary_category:
          anyOf:
            - $ref: '#/components/schemas/CatalogCategory'
            - type: 'null'
        content:
          type: object
          additionalProperties: true
          description: >-
            CMS-only content that is not duplicated from the SimplePay Product
            object.
        bookable:
          $ref: '#/components/schemas/ProductCmsBookable'
    CatalogCategory:
      type: object
      properties:
        active:
          type: boolean
        description:
          type: string
        fallback:
          $ref: '#/components/schemas/CatalogFieldFallback'
        id:
          type: string
          format: uuid
        locale:
          enum:
            - es
            - en
            - pt
            - de
            - fr
            - zh-Hans
        name:
          type: string
        object:
          const: catalog_category
        parentCategoryId:
          type: string
          format: uuid
        slug:
          type: string
        sortOrder:
          type: integer
        updatedAt:
          type: string
          format: date-time
    ProductCmsBookable:
      type:
        - object
        - 'null'
      additionalProperties: false
      properties:
        object:
          const: bookable
        id:
          type: string
          pattern: ^evt_
        slug:
          type: string
        kind:
          enum:
            - appointment
            - class
            - scheduled_offer
            - experience
            - rental
            - service
            - date_range
            - ticketed_event
            - hospitality
        inventory_mode:
          enum:
            - capacity_pool
            - date_range
            - instant
            - seated
            - unit_assignment
            - seat_map
            - request_to_book
        duration_minutes:
          type: integer
          minimum: 1
        time_zone:
          type: string
        slot_interval_minutes:
          type: integer
          minimum: 1
        payment_required:
          type: boolean
        summary:
          $ref: '#/components/schemas/ProductBookableSummary'
        urls:
          $ref: '#/components/schemas/ProductBookableUrls'
    CatalogFieldFallback:
      type: object
      additionalProperties:
        type:
          - string
          - 'null'
        enum:
          - es
          - en
          - pt
          - de
          - fr
          - zh-Hans
          - base
          - id
          - null
    ProductBookableSummary:
      type: object
      additionalProperties: false
      properties:
        occurrences_count:
          type: integer
          minimum: 0
        tiers_count:
          type: integer
          minimum: 0
        availability_status:
          enum:
            - available
            - limited
            - request_to_book
            - sold_out
            - unavailable
        starts_at:
          type:
            - string
            - 'null'
          format: date-time
        ends_at:
          type:
            - string
            - 'null'
          format: date-time
    ProductBookableUrls:
      type: object
      additionalProperties: false
      properties:
        offers:
          type: string
        availability:
          type: string
        holds:
          type: string
        bookings:
          type: string
        slots:
          type: string
  securitySchemes:
    SimplePayApiKey:
      type: http
      scheme: bearer

````