Carrito

La API de carrito se integra con el backend de e-commerce Medusa para gestionar carritos de compra. Proporciona endpoints BFF que simplifican las operaciones de carrito, encapsulando las llamadas necesarias al Store API de Medusa.


El modelo de Carrito

El modelo de carrito contiene la informacion sobre los productos seleccionados, totales calculados y la region asociada.

Propiedades

  • Name
    id
    Type
    string
    Description

    Identificador unico del carrito.

  • Name
    region_id
    Type
    string
    Description

    ID de la region asociada al carrito (determina moneda e impuestos).

  • Name
    items
    Type
    LineItem[]
    Description

    Lista de items en el carrito.

    • Name
      id
      Type
      string
      Description

      Identificador unico del line item.

    • Name
      variant_id
      Type
      string
      Description

      ID de la variante del producto.

    • Name
      title
      Type
      string
      Description

      Nombre del producto.

    • Name
      quantity
      Type
      number
      Description

      Cantidad de unidades.

    • Name
      unit_price
      Type
      number
      Description

      Precio por unidad en centavos.

    • Name
      total
      Type
      number
      Description

      Total del item (unit_price x quantity).

  • Name
    total
    Type
    number
    Description

    Total del carrito incluyendo envio e impuestos.

  • Name
    subtotal
    Type
    number
    Description

    Subtotal antes de envio e impuestos.

  • Name
    shipping_total
    Type
    number
    Description

    Costo de envio.

  • Name
    tax_total
    Type
    number
    Description

    Total de impuestos.

Ejemplo de carrito

{
  "cart": {
    "id": "cart_01HQ8ABC123",
    "region_id": "reg_argentina",
    "items": [
      {
        "id": "item_01HQ8DEF789",
        "variant_id": "variant_01HQ_BD_5G",
        "title": "Blue Dream 5g",
        "quantity": 2,
        "unit_price": 1650000,
        "total": 3300000
      },
      {
        "id": "item_01HQ8DEF790",
        "variant_id": "variant_01HQ_GG_1G",
        "title": "Gorilla Glue 1g",
        "quantity": 1,
        "unit_price": 350000,
        "total": 350000
      }
    ],
    "subtotal": 3650000,
    "shipping_total": 0,
    "tax_total": 0,
    "total": 3650000
  }
}

POST/api/cart

Crear carrito

Crea un nuevo carrito asociado a la region configurada para la organizacion. El carrito se crea vacio y luego se le agregan items.

Respuesta

  • Name
    cart
    Type
    Cart
    Description

    El carrito recien creado con items vacios y totales en cero.

Request

POST
/api/cart
curl -X POST https://app.cannahub.tech/api/cart \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json"

Response

{
  "cart": {
    "id": "cart_01HQ8ABC123",
    "region_id": "reg_argentina",
    "items": [],
    "subtotal": 0,
    "shipping_total": 0,
    "tax_total": 0,
    "total": 0
  }
}

GET/api/cart/:id

Obtener carrito

Obtiene un carrito existente por su ID, incluyendo todos los items y totales calculados.

Parametros de ruta

  • Name
    id
    Type
    string
    Description

    ID del carrito a obtener.

Request

GET
/api/cart/:id
curl https://app.cannahub.tech/api/cart/cart_01HQ8ABC123 \
  -H "Authorization: Bearer {token}"

Response

{
  "cart": {
    "id": "cart_01HQ8ABC123",
    "region_id": "reg_argentina",
    "items": [
      {
        "id": "item_01HQ8DEF789",
        "variant_id": "variant_01HQ_BD_5G",
        "title": "Blue Dream 5g",
        "quantity": 2,
        "unit_price": 1650000,
        "total": 3300000
      }
    ],
    "subtotal": 3300000,
    "shipping_total": 0,
    "tax_total": 0,
    "total": 3300000
  }
}

POST/api/cart/:id/items

Agregar item al carrito

Agrega un item al carrito especificando la variante del producto y la cantidad deseada.

Parametros de ruta

  • Name
    id
    Type
    string
    Description

    ID del carrito.

Request Body

  • Name
    variantId
    Type
    string
    Description

    ID de la variante del producto a agregar.

  • Name
    quantity
    Type
    number
    Description

    Cantidad de unidades a agregar. Por defecto: 1.

Request

POST
/api/cart/:id/items
curl -X POST https://app.cannahub.tech/api/cart/cart_01HQ8ABC123/items \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "variantId": "variant_01HQ_BD_5G",
    "quantity": 2
  }'

Response

{
  "cart": {
    "id": "cart_01HQ8ABC123",
    "region_id": "reg_argentina",
    "items": [
      {
        "id": "item_01HQ8DEF789",
        "variant_id": "variant_01HQ_BD_5G",
        "title": "Blue Dream 5g",
        "quantity": 2,
        "unit_price": 1650000,
        "total": 3300000
      }
    ],
    "subtotal": 3300000,
    "shipping_total": 0,
    "tax_total": 0,
    "total": 3300000
  }
}

DELETE/api/cart/:id/items/:itemId

Eliminar item del carrito

Elimina un item especifico del carrito. Los totales se recalculan automaticamente.

Parametros de ruta

  • Name
    id
    Type
    string
    Description

    ID del carrito.

  • Name
    itemId
    Type
    string
    Description

    ID del line item a eliminar.

Request

DELETE
/api/cart/:id/items/:itemId
curl -X DELETE https://app.cannahub.tech/api/cart/cart_01HQ8ABC123/items/item_01HQ8DEF789 \
  -H "Authorization: Bearer {token}"

Response

{
  "cart": {
    "id": "cart_01HQ8ABC123",
    "region_id": "reg_argentina",
    "items": [],
    "subtotal": 0,
    "shipping_total": 0,
    "tax_total": 0,
    "total": 0
  }
}

Proximos Pasos

Was this page helpful?