---
agentTools:
  projectIndex: https://quiver.readme.io/llms.txt
---

# /products/{productId}

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Fulfilment",
    "description": "...",
    "version": "1.0"
  },
  "tags": [
    {
      "name": "ProductService"
    }
  ],
  "paths": {
    "/products/{productId}": {
      "get": {
        "operationId": "ProductService_GetProduct",
        "responses": {
          "200": {
            "description": "A successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/fulfilmentProduct"
                }
              }
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/rpcStatus"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeInventoryLevel",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "tags": [
          "ProductService"
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.quiver.london/fulfilment"
    }
  ],
  "components": {
    "schemas": {
      "fulfilmentProduct": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "integer",
            "format": "int32"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "merchantId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "excluded": {
            "type": "boolean"
          },
          "ephemeral": {
            "type": "boolean"
          },
          "sku": {
            "type": "string"
          },
          "barcode": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "format": "double"
          },
          "weight": {
            "type": "number",
            "format": "double"
          },
          "dimensions": {
            "$ref": "#/components/schemas/sharedDimensions"
          },
          "merchantProductId": {
            "type": "string"
          },
          "merchantInventoryItemId": {
            "type": "string"
          },
          "inventoryLevel": {
            "type": "integer",
            "format": "int32"
          },
          "weightSource": {
            "type": "string",
            "description": "Where the measurements came from: PLATFORM (the merchant's store),\nMERCHANT (typed in by hand) or ESTIMATED (worked out by us when neither\nsupplied one). Absent when the measurement has never been set."
          },
          "dimensionsSource": {
            "type": "string"
          },
          "shopifyStatus": {
            "type": "string",
            "description": "Shopify's current listing state, for example ACTIVE, DRAFT, ARCHIVED or\nUNLISTED. It is absent for non-Shopify merchants and products imported\nbefore the status field was introduced."
          },
          "shopifyBundle": {
            "type": "boolean",
            "description": "True when Shopify marks this specific variant as requiring components.\nThis is intentionally separate from a Quiver stock configuration: a native\nbundle can still need an ops decision before it has stock mapped here."
          },
          "shopifyBundleConfigured": {
            "type": "boolean",
            "description": "Set for native Shopify bundles after Quiver has resolved every Shopify\ncomponent to physical stock. False means the recipe is known but needs an\ninventory mapping; absent means this is not a Shopify bundle."
          },
          "shopifyBundleComponents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/fulfilmentShopifyBundleComponent"
            },
            "description": "The recipe supplied by Shopify for a native bundle, enriched with each\ncomponent's current Quiver stock mapping. It is informational: Shopify\nremains the source of truth for the recipe itself."
          }
        }
      },
      "fulfilmentShopifyBundleComponent": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "integer",
            "format": "int32",
            "description": "Quiver's product record for the component. It is absent when Shopify's\ncomponent no longer resolves to a Quiver product."
          },
          "merchantProductId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          },
          "inventoryItemConfigs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/fulfilmentShopifyBundleComponentInventoryItem"
            }
          }
        }
      },
      "fulfilmentShopifyBundleComponentInventoryItem": {
        "type": "object",
        "properties": {
          "inventoryItemId": {
            "type": "integer",
            "format": "int32"
          },
          "multiplier": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "protobufAny": {
        "type": "object",
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "additionalProperties": {}
      },
      "rpcStatus": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/protobufAny"
            }
          }
        }
      },
      "sharedDimensions": {
        "type": "object",
        "properties": {
          "height": {
            "type": "number",
            "format": "double"
          },
          "width": {
            "type": "number",
            "format": "double"
          },
          "depth": {
            "type": "number",
            "format": "double"
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "_id": {
    "buffer": {
      "0": 100,
      "1": 231,
      "2": 26,
      "3": 254,
      "4": 74,
      "5": 54,
      "6": 78,
      "7": 0,
      "8": 13,
      "9": 225,
      "10": 4,
      "11": 102
    }
  }
}
```