> ## 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.

# Resolve Cart

> Recebe os IDs dos itens do carrinho e devolve os produtos com o preço resolvido no servidor.
<Warning>O carrinho vive no navegador, então o preço guardado lá não é confiável. Exiba o total sempre com base nesta resposta, e guarde apenas IDs e quantidades no seu front.</Warning>
<Note>Para itens marcados como upsell, o preço de oferta é reavaliado contra a regra e o gatilho. Se a oferta não valer para aquele carrinho, o preço cheio prevalece. O `POST /webstore/checkout` refaz essa mesma conta por conta própria.</Note>



## OpenAPI

````yaml /openapi/storefront-checkout.yaml post /webstore/cart
openapi: 3.1.0
info:
  title: CentralCart Storefront API (Checkout)
  version: 1.0.0
  description: >-
    Carrinho, upsells, cupons, criação de pedido e acompanhamento do pagamento.
    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/cart:
    post:
      tags:
        - Checkout
      summary: Resolve Cart
      description: >-
        Recebe os IDs dos itens do carrinho e devolve os produtos com o preço
        resolvido no servidor.

        <Warning>O carrinho vive no navegador, então o preço guardado lá não é
        confiável. Exiba o total sempre com base nesta resposta, e guarde apenas
        IDs e quantidades no seu front.</Warning>

        <Note>Para itens marcados como upsell, o preço de oferta é reavaliado
        contra a regra e o gatilho. Se a oferta não valer para aquele carrinho,
        o preço cheio prevalece. O `POST /webstore/checkout` refaz essa mesma
        conta por conta própria.</Note>
      operationId: resolveWebstoreCart
      parameters:
        - $ref: '#/components/parameters/StoreDomain'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - items
              properties:
                items:
                  type: array
                  items:
                    type: object
                    required:
                      - id
                    properties:
                      id:
                        type: number
                        description: ID do pacote.
                      quantity:
                        type: number
                        description: >-
                          Quantidade no carrinho. Aceito para conveniência, mas
                          a resposta traz **preço unitário**. O subtotal é
                          calculado pelo cliente.
                      fields:
                        type: object
                        description: >-
                          Valores dos campos personalizados do item. Aceito e
                          ignorado por este endpoint.
                        additionalProperties: true
                      is_upsell:
                        type: boolean
                        description: >-
                          Marca o item como vindo do widget de upsell. Dispara a
                          re-resolução do preço de oferta.
                      upsell_trigger_id:
                        type: number
                        nullable: true
                        description: >-
                          ID do produto-gatilho da regra de upsell. Use o valor
                          devolvido em `upsell.upsell_trigger_id` por `POST
                          /webstore/upsells`. `null` para ofertas globais,
                          populares e de pós-venda.
            example:
              items:
                - id: 1
                  quantity: 2
                - id: 7
                  quantity: 1
                  is_upsell: true
                  upsell_trigger_id: 1
      responses:
        '200':
          description: Produtos do carrinho com preço resolvido
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  description: >-
                    Mesma estrutura de um produto em `GET /webstore/package`,
                    com o `pricing` já ajustado quando a oferta de upsell é
                    válida.
                  properties:
                    id:
                      type: number
                    name:
                      type: string
                    slug:
                      type: string
                    pricing:
                      type: object
                      properties:
                        price:
                          type: number
                          description: Preço unitário autorizado pelo servidor.
                        compare_at:
                          type: number
                          nullable: true
                          description: >-
                            Preço "de". Quando a oferta de upsell é aplicada,
                            recebe o preço cheio anterior.
                        percent_discount:
                          type: number
                          nullable: true
                    stock:
                      type: object
                      properties:
                        quantity:
                          type: number
                          nullable: true
                        available:
                          type: boolean
                        min_amount:
                          type: number
                    is_upsell:
                      type: boolean
                      description: >-
                        Presente somente quando a oferta de upsell foi validada
                        pelo servidor.
                    upsell_trigger_id:
                      type: number
                      nullable: true
              example:
                - id: 1
                  name: VIP Inicial
                  slug: vip-inicial
                  pricing:
                    price: 10
                    compare_at: 20
                    percent_discount: -50
                  stock:
                    quantity: 100
                    available: true
                    min_amount: 1
                - id: 7
                  name: Chave Bônus
                  slug: chave-bonus
                  is_upsell: true
                  upsell_trigger_id: 1
                  pricing:
                    price: 5
                    compare_at: 15
                    percent_discount: -66.67
                  stock:
                    quantity: null
                    available: true
                    min_amount: 1
        '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
  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.
  schemas:
    Error:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              code:
                type: string
              ref:
                type: string

````