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

# List Packages

> Lista os produtos disponíveis na loja.
<Note>Use `?slug=meu-produto` para buscar um produto pela URL; o slug é único por loja. Combine com `include_variations=true` para trazer todas as variações de uma vez.</Note>



## OpenAPI

````yaml /openapi/storefront-catalog.yaml get /webstore/package
openapi: 3.1.0
info:
  title: CentralCart Storefront API (Catálogo)
  version: 1.0.0
  description: >-
    Produtos, categorias e posts do blog da loja. Nenhum destes endpoints exige
    autenticação. A loja é resolvida pelo header `x-store-domain`.
servers:
  - url: https://api.centralcart.io/v1
    description: Produção
security: []
paths:
  /webstore/package:
    get:
      tags:
        - Catalogo
      summary: List Packages
      description: >-
        Lista os produtos disponíveis na loja.

        <Note>Use `?slug=meu-produto` para buscar um produto pela URL; o slug é
        único por loja. Combine com `include_variations=true` para trazer todas
        as variações de uma vez.</Note>
      operationId: listWebstorePackages
      parameters:
        - $ref: '#/components/parameters/StoreDomain'
        - name: q
          in: query
          required: false
          description: Busca por nome
          schema:
            type: string
        - name: order_by
          in: query
          required: false
          description: >-
            Ordenação por `id` ou `price` no formato `campo:asc|desc` (padrão:
            `id:asc`)
          schema:
            type: string
        - name: category_id
          in: query
          required: false
          description: >-
            Filtra por categoria. Use `all` para obter produtos de todas as
            categoria.
          schema:
            oneOf:
              - type: string
              - type: number
        - name: id
          in: query
          required: false
          description: Filtra por um ou mais IDs
          schema:
            oneOf:
              - type: number
              - type: array
                items:
                  type: number
        - name: slug
          in: query
          required: false
          description: >-
            Filtra pelo slug do produto (único por loja). Use para obter um
            produto específico pela URL, ex: `?slug=vip-inicial`.
          schema:
            type: string
        - name: include_variations
          in: query
          required: false
          description: >-
            Inclui variações quando `true` (por padrão retorna apenas o pacote
            principal)
          schema:
            type: boolean
        - name: load_parent
          in: query
          required: false
          description: Inclui dados resumidos do pacote pai
          schema:
            type: boolean
        - name: limit
          in: query
          required: false
          description: Quantidade por página (default interno)
          schema:
            type: number
        - name: page
          in: query
          required: false
          description: 'Página para paginação (default: 1)'
          schema:
            type: number
      responses:
        '200':
          description: Lista de pacotes
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      total:
                        type: number
                      per_page:
                        type: number
                      current_page:
                        type: number
                      last_page:
                        type: number
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Package'
              example:
                meta:
                  total: 2
                  per_page: 15
                  current_page: 1
                  last_page: 1
                data:
                  - id: 1
                    category_id: 1
                    store_id: 1
                    position: 1
                    enabled: true
                    name: VIP Inicial
                    type: SINGLE
                    slug: vip-inicial
                    image: https://cdn.centralcart.io/stores/1/packages/image.png
                    description: Descrição do produto
                    is_auto_delivery: true
                    pricing:
                      price: 10
                      compare_at: 20
                      percent_discount: -50
                    stock:
                      quantity: 100
                      available: true
                      min_amount: 1
                    fields:
                      - id: 1
                        name: nickname
                        type: TEXT
                        description: Seu nickname
        '404':
          $ref: '#/components/responses/StoreNotFound'
      security: []
components:
  parameters:
    StoreDomain:
      name: x-store-domain
      in: header
      required: true
      description: 'Domínio da sua loja (ex: sualoja.centralcart.ai)'
      schema:
        type: string
  schemas:
    Package:
      type: object
      properties:
        id:
          type: number
        category_id:
          type: number
        store_id:
          type: number
        parent_id:
          type: number
          nullable: true
          description: Preenchido quando o pacote é uma variação de outro.
        position:
          type: number
        enabled:
          type: boolean
        name:
          type: string
        type:
          type: string
        slug:
          type: string
        image:
          type: string
        description:
          type: string
        is_auto_delivery:
          type: boolean
          description: Se a entrega do produto é automática.
        pricing:
          type: object
          properties:
            price:
              type: number
            compare_at:
              type: number
              nullable: true
              description: Preço "de", usado para exibir desconto.
            percent_discount:
              type: number
              nullable: true
            min:
              type: number
              description: >-
                Menor preço entre as variações. Só presente quando o pacote tem
                variações.
            max:
              type: number
              description: >-
                Maior preço entre as variações. Só presente quando o pacote tem
                variações.
        stock:
          type: object
          properties:
            quantity:
              type: number
              nullable: true
              description: '`null` significa estoque ilimitado.'
            available:
              type: boolean
            min_amount:
              type: number
        sales:
          type: number
          description: >-
            Total de vendas. Presente apenas quando a loja exibe contagem de
            vendas.
        parent:
          type: object
          nullable: true
          description: Dados resumidos do pacote pai. Presente quando `load_parent=true`.
          properties:
            id:
              type: number
            slug:
              type: string
            name:
              type: string
        fields:
          type: array
          description: >-
            Campos personalizados **deste produto**. Os valores coletados vão no
            `options` do item correspondente no carrinho. Não confunda com os
            campos de `GET /webstore/checkout_fields`, que vão no `fields` da
            raiz do checkout.
          items:
            type: object
            properties:
              id:
                type: number
              name:
                type: string
              type:
                type: string
                enum:
                  - TEXT
                  - NUMBER
                  - SELECT
                  - ROBLOX
              description:
                type: string
              required:
                type: boolean
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              code:
                type: string
              ref:
                type: string
  responses:
    StoreNotFound:
      description: Loja não encontrada para o `x-store-domain` informado
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            errors:
              - message: Store not found.

````