{
  "opencollection": "1.0.0",
  "info": {
    "name": "Dutchie Plus GraphQL API",
    "version": "2021-07",
    "description": "Dutchie Plus headless cannabis-commerce GraphQL API. All requests are HTTPS POST of a GraphQL query/variables body to https://plus.dutchie.com/plus/2021-07/graphql, authenticated with a per-retailer Bearer API key. [CONFIRMED] operations appear in GetDutchie/dutchie-plus-nextjs-example; [MODELED] operations are referenced in Dutchie Plus docs. Note: Dutchie has announced a 2026 sunset of the Plus headless commerce API."
  },
  "request": {
    "auth": {
      "type": "bearer",
      "token": "{{dutchiePlusKey}}"
    }
  },
  "items": [
    {
      "info": { "name": "Menu & Products", "type": "folder" },
      "items": [
        {
          "info": { "name": "Menu (products) [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"query Menu($category: Category) { menu(filter: { category: $category }, pagination: { limit: 12, offset: 0 }) { products { id name description image category strainType brand { name } potencyThc { formatted } potencyCbd { formatted } variants { option priceRec priceMed specialPriceRec specialPriceMed } } } }\",\"variables\":{\"category\":\"FLOWER\"}}"
            }
          },
          "docs": "Return a page of products for the scoped retailer's menu."
        }
      ]
    },
    {
      "info": { "name": "Retailers", "type": "folder" },
      "items": [
        {
          "info": { "name": "Retailers [MODELED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"query Retailers { retailers { id name slug status offerDelivery offerAnyPickup pricingTypes address { line1 city state postalCode } } }\",\"variables\":{}}"
            }
          },
          "docs": "List dispensaries/retailers on the account. Modeled from the 2021-07 schema."
        }
      ]
    },
    {
      "info": { "name": "Specials", "type": "folder" },
      "items": [
        {
          "info": { "name": "Specials [MODELED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"query Specials { specials { id name description type startDate endDate } }\",\"variables\":{}}"
            }
          },
          "docs": "List a retailer's active specials/deals. Modeled from the 2021-07 schema."
        }
      ]
    },
    {
      "info": { "name": "Checkout", "type": "folder" },
      "items": [
        {
          "info": { "name": "Create Checkout [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"mutation CreateCheckout($orderType: OrderType!, $pricingType: PricingType!) { createCheckout(orderType: $orderType, pricingType: $pricingType) { id orderType pricingType redirectUrl items { id option quantity } } }\",\"variables\":{\"orderType\":\"DELIVERY\",\"pricingType\":\"RECREATIONAL\"}}"
            }
          },
          "docs": "Create a new checkout for an order type and pricing type."
        },
        {
          "info": { "name": "Add Item to Checkout [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"mutation AddItemToCheckout($checkoutId: ID!, $productId: ID!, $quantity: Int!, $option: String!) { addItem(checkoutId: $checkoutId, productId: $productId, quantity: $quantity, option: $option) { id items { id option quantity product { name } } } }\",\"variables\":{\"checkoutId\":\"\",\"productId\":\"\",\"quantity\":1,\"option\":\"3.5g\"}}"
            }
          },
          "docs": "Add a product variant to a checkout."
        },
        {
          "info": { "name": "Update Checkout Item Quantity [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"mutation UpdateCheckoutItemQuantity($checkoutId: ID!, $itemId: ID!, $quantity: Int!) { updateQuantity(checkoutId: $checkoutId, itemId: $itemId, quantity: $quantity) { id items { id quantity } } }\",\"variables\":{\"checkoutId\":\"\",\"itemId\":\"\",\"quantity\":2}}"
            }
          },
          "docs": "Update the quantity of a checkout line item."
        },
        {
          "info": { "name": "Remove Item from Checkout [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"mutation RemoveItemFromCheckout($checkoutId: ID!, $itemId: ID!) { removeItem(checkoutId: $checkoutId, itemId: $itemId) { id items { id } } }\",\"variables\":{\"checkoutId\":\"\",\"itemId\":\"\"}}"
            }
          },
          "docs": "Remove a line item from a checkout."
        },
        {
          "info": { "name": "Update Checkout (order/pricing type) [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"mutation UpdateCheckout($checkoutId: ID!, $orderType: OrderType!, $pricingType: PricingType!) { updateCheckout(checkoutId: $checkoutId, orderType: $orderType, pricingType: $pricingType) { id orderType pricingType } }\",\"variables\":{\"checkoutId\":\"\",\"orderType\":\"PICKUP\",\"pricingType\":\"RECREATIONAL\"}}"
            }
          },
          "docs": "Update a checkout's order type and pricing type."
        },
        {
          "info": { "name": "Get Checkout [CONFIRMED]", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://plus.dutchie.com/plus/2021-07/graphql",
            "headers": [
              { "name": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "type": "json",
              "data": "{\"query\":\"query Checkout($id: ID!) { checkout(id: $id) { id orderType pricingType redirectUrl items { id option quantity product { name } } } }\",\"variables\":{\"id\":\"\"}}"
            }
          },
          "docs": "Retrieve an existing checkout by id."
        }
      ]
    }
  ],
  "bundled": true
}
