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

# Storefront

> Cart and checkout operations an automation can run as App Action steps.

Built-in cart and checkout operations an [automation](/automations/overview) can run as App Action steps.

## Cart

<AccordionGroup>
  <Accordion title="add_to_cart">
    Add a product to the cart.

    **Input**

    <ResponseField name="cart_uid" type="string" required>
      Cart UUID
    </ResponseField>

    <ResponseField name="product_uid" type="string" required>
      Product UUID to add
    </ResponseField>

    <ResponseField name="quantity" type="integer">
      Quantity to add *min: 1. Default: `1`.*
    </ResponseField>

    **Output**

    <ResponseField name="cart_uid" type="string | null" />

    <ResponseField name="line_item_id" type="integer | null" />

    <ResponseField name="product_uid" type="string | null" />

    <ResponseField name="quantity" type="integer | null" />
  </Accordion>

  <Accordion title="get_cart">
    Retrieve cart details by UUID.

    **Input**

    <ResponseField name="cart_uid" type="string" required>
      Cart UUID
    </ResponseField>

    **Output**

    <ResponseField name="cart_uid" type="string | null" />

    <ResponseField name="line_items" type="CartLineItemOutput[]">
      <Expandable title="properties">
        <ResponseField name="line_item_id" type="integer" />

        <ResponseField name="product_uid" type="string" />

        <ResponseField name="quantity" type="integer" />

        <ResponseField name="unit_price" type="number" />

        <ResponseField name="total" type="number" />
      </Expandable>
    </ResponseField>

    <ResponseField name="item_count" type="integer" />

    <ResponseField name="subtotal" type="number" />
  </Accordion>

  <Accordion title="remove_from_cart">
    Remove an item from the cart.

    **Input**

    <ResponseField name="cart_uid" type="string" required>
      Cart UUID
    </ResponseField>

    <ResponseField name="line_item_id" type="integer" required>
      Line item ID to remove *min: > 0.*
    </ResponseField>

    **Output**

    <ResponseField name="cart_uid" type="string | null" />

    <ResponseField name="line_item_id" type="integer | null" />

    <ResponseField name="product_uid" type="string | null" />
  </Accordion>

  <Accordion title="update_cart_item">
    Update the quantity of a cart item.

    **Input**

    <ResponseField name="cart_uid" type="string" required>
      Cart UUID
    </ResponseField>

    <ResponseField name="line_item_id" type="integer" required>
      Line item ID to update *min: > 0.*
    </ResponseField>

    <ResponseField name="quantity" type="integer" required>
      New quantity *min: 1.*
    </ResponseField>

    **Output**

    <ResponseField name="cart_uid" type="string | null" />

    <ResponseField name="line_item_id" type="integer | null" />

    <ResponseField name="previous_quantity" type="integer | null" />

    <ResponseField name="new_quantity" type="integer | null" />
  </Accordion>
</AccordionGroup>

## Checkout

<AccordionGroup>
  <Accordion title="get_checkout_by_order">
    Retrieve checkout session for a given order.

    **Input**

    <ResponseField name="order_id" type="integer" required>
      Order ID *min: > 0.*
    </ResponseField>

    **Output**

    <ResponseField name="checkout" type="CheckoutOutput | null">
      <Expandable title="properties">
        <ResponseField name="checkout_uid" type="string" />

        <ResponseField name="status" type="string" />

        <ResponseField name="cart_uid" type="string | null" />

        <ResponseField name="order_uid" type="string | null" />

        <ResponseField name="total_amount" type="number" />

        <ResponseField name="item_count" type="integer" />

        <ResponseField name="customer_email" type="string | null" />

        <ResponseField name="payment_provider" type="string | null" />

        <ResponseField name="billing_address" type="CheckoutAddressOutput | null">
          <Expandable title="properties">
            <ResponseField name="line1" type="string | null" />

            <ResponseField name="line2" type="string | null" />

            <ResponseField name="city" type="string | null" />

            <ResponseField name="state" type="string | null" />

            <ResponseField name="postal_code" type="string | null" />

            <ResponseField name="country" type="string | null" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Accordion>

  <Accordion title="get_checkout_session">
    Retrieve checkout session details by UUID.

    **Input**

    <ResponseField name="checkout_uid" type="string" required>
      Checkout session UUID
    </ResponseField>

    **Output**

    <ResponseField name="checkout" type="CheckoutOutput | null">
      <Expandable title="properties">
        <ResponseField name="checkout_uid" type="string" />

        <ResponseField name="status" type="string" />

        <ResponseField name="cart_uid" type="string | null" />

        <ResponseField name="order_uid" type="string | null" />

        <ResponseField name="total_amount" type="number" />

        <ResponseField name="item_count" type="integer" />

        <ResponseField name="customer_email" type="string | null" />

        <ResponseField name="payment_provider" type="string | null" />

        <ResponseField name="billing_address" type="CheckoutAddressOutput | null">
          <Expandable title="properties">
            <ResponseField name="line1" type="string | null" />

            <ResponseField name="line2" type="string | null" />

            <ResponseField name="city" type="string | null" />

            <ResponseField name="state" type="string | null" />

            <ResponseField name="postal_code" type="string | null" />

            <ResponseField name="country" type="string | null" />
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Accordion>
</AccordionGroup>
