{
	"info": {
		"_postman_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
		"name": "PuppetVendors V2 Vendor API",
		"description": "Complete API collection for the PuppetVendors V2 Vendor API.\n\nThis collection covers all vendor-facing endpoints including authentication, orders, products, fulfillments, payouts, dashboard, customers, discounts, commissions, shipping, integrations, and settings.\n\n**Getting Started:**\n1. Set `base_url` to your environment (default: production)\n2. Set `api_key` to your vendor API key (`vk_live_...`)\n3. Run the Authenticate request — it auto-sets `{{token}}`\n4. All subsequent requests use the token automatically via collection auth\n\n**Portal Auth (email/password):**\nAlternatively, use Portal Auth > Login with email/password to get a token.",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"auth": {
		"type": "apikey",
		"apikey": [
			{
				"key": "key",
				"value": "x-access-token",
				"type": "string"
			},
			{
				"key": "value",
				"value": "{{token}}",
				"type": "string"
			},
			{
				"key": "in",
				"value": "header",
				"type": "string"
			}
		]
	},
	"variable": [
		{
			"key": "base_url",
			"value": "https://production-api.puppetvendors.com",
			"type": "string"
		},
		{
			"key": "token",
			"value": "",
			"type": "string"
		},
		{
			"key": "api_key",
			"value": "vk_live_YOUR_API_KEY_HERE",
			"type": "string"
		}
	],
	"item": [
		{
			"name": "Authentication",
			"description": "API key-based authentication. Use a vendor API key (`vk_live_...`) to obtain a JWT token.",
			"item": [
				{
					"name": "Authenticate",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"if (pm.response.code === 200) {",
									"    var jsonData = pm.response.json();",
									"    if (jsonData.data && jsonData.data.token) {",
									"        pm.collectionVariables.set(\"token\", jsonData.data.token);",
									"        console.log(\"Token saved to collection variable\");",
									"    }",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"apiKey\": \"{{api_key}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/authenticate",
							"host": ["{{base_url}}"],
							"path": ["authenticate"]
						},
						"description": "Authenticate using a vendor API key to obtain a JWT token. The test script automatically saves the token to the collection variable."
					}
				},
				{
					"name": "Verify API Key",
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"apiKey\": \"{{api_key}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/verify",
							"host": ["{{base_url}}"],
							"path": ["verify"]
						},
						"description": "Verify an API key is valid without issuing a JWT. Returns scope, permissions, and identity info."
					}
				},
				{
					"name": "Refresh Token",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{base_url}}/refresh-token",
							"host": ["{{base_url}}"],
							"path": ["refresh-token"]
						},
						"description": "Exchange a valid token for a new one with extended expiry."
					}
				}
			]
		},
		{
			"name": "Portal Auth",
			"description": "Email/password authentication for the vendor portal. Alternative to API key auth.",
			"item": [
				{
					"name": "Login",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"if (pm.response.code === 200) {",
									"    var jsonData = pm.response.json();",
									"    if (jsonData.data && jsonData.data.token) {",
									"        pm.collectionVariables.set(\"token\", jsonData.data.token);",
									"        console.log(\"Portal token saved to collection variable\");",
									"    }",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"email\": \"vendor@acme-widgets.com\",\n    \"password\": \"secureP@ssw0rd\",\n    \"shopDomain\": \"acme-marketplace.myshopify.com\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/portal/auth/login",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "login"]
						},
						"description": "Authenticate a vendor user with email and password. Rate limited to 5 requests per 15 minutes."
					}
				},
				{
					"name": "Signup",
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"email\": \"newvendor@example.com\",\n    \"password\": \"SecurePass123!\",\n    \"shopDomain\": \"acme-marketplace.myshopify.com\",\n    \"vendor\": \"Acme Widgets Co\",\n    \"termsAccepted\": true,\n    \"email_address\": \"\",\n    \"profile\": {\n        \"phone\": \"+1-555-0123\",\n        \"website\": \"https://acme-widgets.com\"\n    }\n}"
						},
						"url": {
							"raw": "{{base_url}}/portal/auth/signup",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "signup"]
						},
						"description": "Create a new vendor signup request. The account is created in pending state and requires merchant approval."
					}
				},
				{
					"name": "Forgot Password",
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"email\": \"vendor@acme-widgets.com\",\n    \"shopDomain\": \"acme-marketplace.myshopify.com\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/portal/auth/forgot-password",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "forgot-password"]
						},
						"description": "Request a password reset. Delivery is decided by the merchant setting notificationSettings.vendorPasswordReset, unless overridden by the optional body field sendNotification. Omit sendNotification to use the merchant setting; true forces the email path (always returns a generic success message to prevent email enumeration); false forces the token-return path that returns { token, userId } and requires the x-access-token public API key for the shop."
					}
				},
				{
					"name": "Logout",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{base_url}}/portal/auth/logout",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "logout"]
						},
						"description": "Revoke the current token, immediately invalidating it."
					}
				},
				{
					"name": "List Vendors",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/portal/auth/vendors",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "vendors"]
						},
						"description": "List vendor accounts the authenticated user can switch into. Powers the sidebar account switcher."
					}
				},
				{
					"name": "Switch Vendor",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"vendorId\": \"507f1f77bcf86cd799439012\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/portal/auth/switch-vendor",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "switch-vendor"]
						},
						"description": "Switch the active vendor context. Issues a new JWT bound to the requested vendor and revokes the current one."
					}
				},
				{
					"name": "Refresh Token",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{base_url}}/portal/auth/refresh-token",
							"host": ["{{base_url}}"],
							"path": ["portal", "auth", "refresh-token"]
						},
						"description": "Exchange a valid vendor token for a new one with extended expiry."
					}
				}
			]
		},
		{
			"name": "Orders",
			"description": "Order management endpoints. Vendor tokens are automatically scoped to their own orders.",
			"item": [
				{
					"name": "List Orders",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/orders?first=25&sortBy=createdAt&sortOrder=desc",
							"host": ["{{base_url}}"],
							"path": ["orders"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "sortBy", "value": "createdAt" },
								{ "key": "sortOrder", "value": "desc" },
								{ "key": "status", "value": "unfulfilled", "disabled": true },
								{ "key": "search", "value": "", "disabled": true },
								{ "key": "createdAtMin", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "createdAtMax", "value": "2025-12-31T23:59:59Z", "disabled": true },
								{ "key": "after", "value": "", "disabled": true }
							]
						},
						"description": "Retrieve a paginated list of orders with optional filters."
					}
				},
				{
					"name": "Get Order",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/orders/507f1f77bcf86cd799439014",
							"host": ["{{base_url}}"],
							"path": ["orders", "507f1f77bcf86cd799439014"]
						},
						"description": "Get detailed information about a specific order including line items, timeline, and vendor payouts."
					}
				},
				{
					"name": "Get Order Counts",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/orders/counts",
							"host": ["{{base_url}}"],
							"path": ["orders", "counts"],
							"query": [
								{ "key": "startDate", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "endDate", "value": "2025-12-31T23:59:59Z", "disabled": true }
							]
						},
						"description": "Get order counts grouped by fulfillment status tab (open, processing, closed, all)."
					}
				},
				{
					"name": "Export Orders (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/orders/export",
							"host": ["{{base_url}}"],
							"path": ["orders", "export"],
							"query": [
								{ "key": "status", "value": "unfulfilled", "disabled": true },
								{ "key": "createdAtMin", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "createdAtMax", "value": "2025-06-30T23:59:59Z", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "Export orders to CSV. Returns a downloadable CSV file."
					}
				},
				{
					"name": "Export Orders by Products (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/orders/export/products",
							"host": ["{{base_url}}"],
							"path": ["orders", "export", "products"],
							"query": [
								{ "key": "startDate", "value": "2025-01-01T00:00:00.000Z", "disabled": true },
								{ "key": "endDate", "value": "2025-06-30T23:59:59.000Z", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "Export orders aggregated by product/variant as CSV."
					}
				},
				{
					"name": "Get Order Timeline",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/orders/507f1f77bcf86cd799439014",
							"host": ["{{base_url}}"],
							"path": ["orders", "507f1f77bcf86cd799439014"]
						},
						"description": "Timeline events are included in the Get Order response under the `timeline` field."
					}
				},
				{
					"name": "Add Timeline Comment",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"comments\": \"Package shipped via UPS Ground. Expected delivery in 3-5 business days.\",\n    \"eventType\": \"comment\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/orders/507f1f77bcf86cd799439014/timeline",
							"host": ["{{base_url}}"],
							"path": ["orders", "507f1f77bcf86cd799439014", "timeline"]
						},
						"description": "Add a timeline comment to an order."
					}
				}
			]
		},
		{
			"name": "Products",
			"description": "Product CRUD, inventory management, media upload, and export.",
			"item": [
				{
					"name": "List Products",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products?first=25&sortBy=updatedAt&sortOrder=desc",
							"host": ["{{base_url}}"],
							"path": ["products"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "sortBy", "value": "updatedAt" },
								{ "key": "sortOrder", "value": "desc" },
								{ "key": "status", "value": "active", "disabled": true },
								{ "key": "search", "value": "", "disabled": true },
								{ "key": "after", "value": "", "disabled": true }
							]
						},
						"description": "Retrieve a paginated list of products."
					}
				},
				{
					"name": "Get Product",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/507f1f77bcf86cd799439013",
							"host": ["{{base_url}}"],
							"path": ["products", "507f1f77bcf86cd799439013"]
						},
						"description": "Get detailed product information including variants, images, and metafields."
					}
				},
				{
					"name": "Create Product",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"title\": \"Blue T-Shirt\",\n    \"descriptionHtml\": \"<p>Premium cotton blue t-shirt. Available in multiple sizes.</p>\",\n    \"productType\": \"Apparel\",\n    \"vendor\": \"Acme Widgets\",\n    \"tags\": [\"cotton\", \"blue\", \"t-shirt\", \"summer\"],\n    \"status\": \"DRAFT\",\n    \"options\": [\n        {\n            \"name\": \"Size\",\n            \"values\": [\"Small\", \"Medium\", \"Large\", \"X-Large\"]\n        },\n        {\n            \"name\": \"Color\",\n            \"values\": [\"Navy Blue\", \"Sky Blue\"]\n        }\n    ],\n    \"variants\": [\n        {\n            \"title\": \"Small / Navy Blue\",\n            \"price\": \"29.99\",\n            \"compareAtPrice\": \"39.99\",\n            \"sku\": \"BTS-NB-S\",\n            \"barcode\": \"123456789012\",\n            \"inventoryQuantity\": 50,\n            \"weight\": 0.3,\n            \"weightUnit\": \"KILOGRAMS\",\n            \"optionValues\": [\n                { \"optionName\": \"Size\", \"name\": \"Small\" },\n                { \"optionName\": \"Color\", \"name\": \"Navy Blue\" }\n            ]\n        },\n        {\n            \"title\": \"Medium / Navy Blue\",\n            \"price\": \"29.99\",\n            \"sku\": \"BTS-NB-M\",\n            \"inventoryQuantity\": 75,\n            \"weight\": 0.35,\n            \"weightUnit\": \"KILOGRAMS\",\n            \"optionValues\": [\n                { \"optionName\": \"Size\", \"name\": \"Medium\" },\n                { \"optionName\": \"Color\", \"name\": \"Navy Blue\" }\n            ]\n        }\n    ],\n    \"images\": [\n        {\n            \"src\": \"https://cdn.example.com/images/blue-tshirt-front.jpg\",\n            \"altText\": \"Blue T-Shirt front view\"\n        }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/products",
							"host": ["{{base_url}}"],
							"path": ["products"]
						},
						"description": "Create a new product via Shopify productSet mutation. Max 2048 variants."
					}
				},
				{
					"name": "Update Product",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"title\": \"Blue T-Shirt (Updated)\",\n    \"descriptionHtml\": \"<p>Premium organic cotton blue t-shirt. Now even softer!</p>\",\n    \"tags\": [\"cotton\", \"organic\", \"blue\", \"t-shirt\", \"summer\", \"bestseller\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/507f1f77bcf86cd799439013",
							"host": ["{{base_url}}"],
							"path": ["products", "507f1f77bcf86cd799439013"]
						},
						"description": "Full product update via Shopify productSet mutation. Note: variants/options/metafields arrays REPLACE existing values."
					}
				},
				{
					"name": "Delete Product",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/507f1f77bcf86cd799439013",
							"host": ["{{base_url}}"],
							"path": ["products", "507f1f77bcf86cd799439013"]
						},
						"description": "Delete a product from Shopify and soft-delete in local database."
					}
				},
				{
					"name": "Get Product Counts",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/counts",
							"host": ["{{base_url}}"],
							"path": ["products", "counts"]
						},
						"description": "Get product counts by status (active, draft, pending, etc.)."
					}
				},
				{
					"name": "Update Product Status",
					"request": {
						"method": "PATCH",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"status\": \"ACTIVE\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/507f1f77bcf86cd799439013/status",
							"host": ["{{base_url}}"],
							"path": ["products", "507f1f77bcf86cd799439013", "status"]
						},
						"description": "Lightweight status-only update (publish/unpublish). Values: ACTIVE, DRAFT."
					}
				},
				{
					"name": "Duplicate Product",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/507f1f77bcf86cd799439013/duplicate",
							"host": ["{{base_url}}"],
							"path": ["products", "507f1f77bcf86cd799439013", "duplicate"]
						},
						"description": "Clone a product to a new draft. Title becomes 'Copy of ...', status forced to draft, inventory zeroed, SKUs cleared."
					}
				},
				{
					"name": "Update Inventory",
					"request": {
						"method": "PATCH",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"mode\": \"set\",\n    \"items\": [\n        {\n            \"variantId\": \"gid://shopify/ProductVariant/12345678\",\n            \"locationId\": \"gid://shopify/Location/98765432\",\n            \"quantity\": 100\n        },\n        {\n            \"variantId\": \"gid://shopify/ProductVariant/12345679\",\n            \"locationId\": \"gid://shopify/Location/98765432\",\n            \"quantity\": 50\n        }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/507f1f77bcf86cd799439013/inventory",
							"host": ["{{base_url}}"],
							"path": ["products", "507f1f77bcf86cd799439013", "inventory"]
						},
						"description": "Inventory-only update. Mode 'set' uses absolute quantities; mode 'adjust' uses delta values."
					}
				},
				{
					"name": "Upload Media",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"filename\": \"product-hero.jpg\",\n    \"mimeType\": \"image/jpeg\",\n    \"fileSize\": 2048576,\n    \"resource\": \"IMAGE\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/media",
							"host": ["{{base_url}}"],
							"path": ["products", "media"]
						},
						"description": "Upload media to Shopify staging. Returns a staged upload URL and parameters for direct upload."
					}
				},
				{
					"name": "Export Products (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/export",
							"host": ["{{base_url}}"],
							"path": ["products", "export"],
							"query": [
								{ "key": "status", "value": "active", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "Export products as CSV. Capped at 10,000 rows for sync; larger exports are processed asynchronously."
					}
				},
				{
					"name": "AI Generate Description",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"title\": \"Blue T-Shirt\",\n    \"productType\": \"Apparel\",\n    \"tags\": [\"cotton\", \"blue\", \"summer\"],\n    \"features\": [\"100% organic cotton\", \"Pre-shrunk\", \"Machine washable\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/ai/description",
							"host": ["{{base_url}}"],
							"path": ["products", "ai", "description"]
						},
						"description": "Generate a product description using AI based on title, type, tags, and features."
					}
				},
				{
					"name": "Generate Barcode",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/barcode",
							"host": ["{{base_url}}"],
							"path": ["products", "barcode"]
						},
						"description": "Generate a unique barcode using the shop's barcode configuration. Validates uniqueness against Shopify."
					}
				},
				{
					"name": "Bulk Import Products",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"data\": [\n        {\n            \"Title\": \"Red Sneakers\",\n            \"Body (HTML)\": \"<p>Comfortable everyday sneakers in bold red.</p>\",\n            \"Vendor\": \"Acme Widgets\",\n            \"Product Type\": \"Footwear\",\n            \"Tags\": \"sneakers, red, casual\",\n            \"Variant SKU\": \"RS-001\",\n            \"Variant Price\": \"79.99\",\n            \"Variant Inventory Qty\": \"200\",\n            \"Option1 Name\": \"Size\",\n            \"Option1 Value\": \"10\"\n        },\n        {\n            \"Title\": \"Red Sneakers\",\n            \"Variant SKU\": \"RS-002\",\n            \"Variant Price\": \"79.99\",\n            \"Variant Inventory Qty\": \"150\",\n            \"Option1 Name\": \"Size\",\n            \"Option1 Value\": \"11\"\n        }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/bulk",
							"host": ["{{base_url}}"],
							"path": ["products", "bulk"]
						},
						"description": "Bulk import products from a JSON data array (CSV-like rows). Returns product count on success."
					}
				}
			]
		},
		{
			"name": "Product Templates",
			"description": "Saved product templates for quick creation.",
			"item": [
				{
					"name": "List Templates",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/templates",
							"host": ["{{base_url}}"],
							"path": ["products", "templates"]
						},
						"description": "List all saved product templates."
					}
				},
				{
					"name": "Get Template",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/templates/64a1b2c3d4e5f60012345678",
							"host": ["{{base_url}}"],
							"path": ["products", "templates", "64a1b2c3d4e5f60012345678"]
						},
						"description": "Get a specific product template by ID."
					}
				},
				{
					"name": "Create Template",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"Basic Apparel Template\",\n    \"template\": {\n        \"productType\": \"Apparel\",\n        \"tags\": [\"clothing\"],\n        \"options\": [\n            {\n                \"name\": \"Size\",\n                \"values\": [\"S\", \"M\", \"L\", \"XL\"]\n            }\n        ]\n    }\n}"
						},
						"url": {
							"raw": "{{base_url}}/products/templates",
							"host": ["{{base_url}}"],
							"path": ["products", "templates"]
						},
						"description": "Save a new product template for reuse."
					}
				},
				{
					"name": "Delete Template",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/products/templates/64a1b2c3d4e5f60012345678",
							"host": ["{{base_url}}"],
							"path": ["products", "templates", "64a1b2c3d4e5f60012345678"]
						},
						"description": "Delete a saved product template."
					}
				}
			]
		},
		{
			"name": "Fulfillments",
			"description": "Fulfillment creation, updates, and bulk operations.",
			"item": [
				{
					"name": "List Fulfillments",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/fulfillments?first=25&sortBy=orderNumber&sortOrder=desc",
							"host": ["{{base_url}}"],
							"path": ["fulfillments"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "sortBy", "value": "orderNumber" },
								{ "key": "sortOrder", "value": "desc" },
								{ "key": "fulfillmentStatus", "value": "unfulfilled", "disabled": true },
								{ "key": "shipmentStatus", "value": "", "disabled": true },
								{ "key": "dateMin", "value": "", "disabled": true },
								{ "key": "dateMax", "value": "", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List fulfillment line items with pagination."
					}
				},
				{
					"name": "Create Fulfillment",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"trackingNumber\": \"1Z999AA10123456784\",\n    \"shippingCarrier\": \"UPS\",\n    \"trackingUrl\": \"https://www.ups.com/track?tracknum=1Z999AA10123456784\",\n    \"lineItemIds\": [\"507f1f77bcf86cd799439015\", \"507f1f77bcf86cd799439016\"],\n    \"notifyCustomer\": true\n}"
						},
						"url": {
							"raw": "{{base_url}}/fulfillments",
							"host": ["{{base_url}}"],
							"path": ["fulfillments"]
						},
						"description": "Create a fulfillment for one or more line items. Sends tracking to Shopify and optionally notifies the customer."
					}
				},
				{
					"name": "Update Fulfillment",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"trackingNumber\": \"1Z999AA10123456785\",\n    \"shippingCarrier\": \"UPS\",\n    \"trackingUrl\": \"https://www.ups.com/track?tracknum=1Z999AA10123456785\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/fulfillments/507f1f77bcf86cd799439015",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "507f1f77bcf86cd799439015"]
						},
						"description": "Update fulfillment tracking information for a line item."
					}
				},
				{
					"name": "Get Fulfillment Counts",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/fulfillments/counts",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "counts"],
							"query": [
								{ "key": "startDate", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "endDate", "value": "2025-12-31T23:59:59Z", "disabled": true }
							]
						},
						"description": "Get fulfillment counts by status tab (unfulfilled, onHold, fulfilled, returnInProgress)."
					}
				},
				{
					"name": "Get Fulfillment Stats",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/fulfillments/stats",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "stats"],
							"query": [
								{ "key": "startDate", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "endDate", "value": "2025-12-31T23:59:59Z", "disabled": true }
							]
						},
						"description": "Get headline fulfillment stats: averageDaysToFulfill, unfulfilledFor7Days, fulfilledOnTimePercentage."
					}
				},
				{
					"name": "Export Fulfillments (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/fulfillments/export",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "export"],
							"query": [
								{ "key": "fulfillmentStatus", "value": "fulfilled", "disabled": true },
								{ "key": "dateMin", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "dateMax", "value": "2025-06-30T23:59:59Z", "disabled": true }
							]
						},
						"description": "Export fulfillments as CSV download."
					}
				},
				{
					"name": "Import Fulfillments (CSV)",
					"request": {
						"method": "POST",
						"header": [],
						"body": {
							"mode": "formdata",
							"formdata": [
								{
									"key": "file",
									"type": "file",
									"src": "",
									"description": "CSV file with fulfillment data (Order Number, Tracking Number, Carrier, etc.)"
								}
							]
						},
						"url": {
							"raw": "{{base_url}}/fulfillments/import",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "import"]
						},
						"description": "Upload a CSV file to bulk-fulfill line items. Max 5MB. SHA-256 deduplication prevents double-submits."
					}
				},
				{
					"name": "Bulk Create Fulfillments",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"data\": [\n        {\n            \"orderNumber\": \"1042\",\n            \"trackingNumber\": \"9400111899223100001234\",\n            \"shippingCarrier\": \"USPS\",\n            \"lineItemName\": \"Blue T-Shirt - Medium\"\n        },\n        {\n            \"orderNumber\": \"1043\",\n            \"trackingNumber\": \"9400111899223100001235\",\n            \"shippingCarrier\": \"USPS\",\n            \"lineItemName\": \"Red Sneakers - Size 10\"\n        }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/fulfillments/bulk",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "bulk"]
						},
						"description": "Trigger bulk fulfillment from JSON data. Processed asynchronously via RabbitMQ."
					}
				}
			]
		},
		{
			"name": "Fulfillment Events",
			"description": "Tracking event management for fulfilled line items.",
			"item": [
				{
					"name": "List Fulfillment Events",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/fulfillments/events/507f1f77bcf86cd799439015",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "events", "507f1f77bcf86cd799439015"]
						},
						"description": "List all tracking events for a specific line item."
					}
				},
				{
					"name": "Create Fulfillment Event",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"status\": \"in_transit\",\n    \"message\": \"Package picked up from warehouse and in transit to distribution center.\",\n    \"estimatedDeliveryAt\": \"2025-06-20T17:00:00Z\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/fulfillments/events/507f1f77bcf86cd799439015",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "events", "507f1f77bcf86cd799439015"]
						},
						"description": "Create a tracking event for a fulfilled line item."
					}
				},
				{
					"name": "Update Fulfillment Event",
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"lineItemId\": \"507f1f77bcf86cd799439015\",\n    \"status\": \"delivered\",\n    \"message\": \"Package delivered to front door.\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/fulfillments/events/64a1b2c3d4e5f60012340001",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "events", "64a1b2c3d4e5f60012340001"]
						},
						"description": "Update an existing fulfillment event. Requires lineItemId in the body."
					}
				},
				{
					"name": "Export Fulfillment Events (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/fulfillments/events/export",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "events", "export"],
							"query": [
								{ "key": "dateMin", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "dateMax", "value": "2025-06-30T23:59:59Z", "disabled": true }
							]
						},
						"description": "Export fulfillment events as CSV."
					}
				},
				{
					"name": "Bulk Create Events",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"events\": [\n        {\n            \"lineItemId\": \"507f1f77bcf86cd799439015\",\n            \"status\": \"in_transit\",\n            \"message\": \"Shipment departed facility\"\n        },\n        {\n            \"lineItemId\": \"507f1f77bcf86cd799439016\",\n            \"status\": \"out_for_delivery\",\n            \"message\": \"Out for delivery today\"\n        }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/fulfillments/events/bulk",
							"host": ["{{base_url}}"],
							"path": ["fulfillments", "events", "bulk"]
						},
						"description": "Create multiple fulfillment events in a single request. Max 100 events."
					}
				}
			]
		},
		{
			"name": "Documents",
			"description": "PDF document generation for invoices, packing slips, and shipping labels.",
			"item": [
				{
					"name": "Generate Invoice",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"orderIds\": [\"507f1f77bcf86cd799439014\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/orders/invoice",
							"host": ["{{base_url}}"],
							"path": ["orders", "invoice"]
						},
						"description": "Generate a vendor invoice PDF for specified orders."
					}
				},
				{
					"name": "Generate Packing Slip",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"orderNumbers\": [\"#1042\", \"#1043\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/orders/packing-slip",
							"host": ["{{base_url}}"],
							"path": ["orders", "packing-slip"]
						},
						"description": "Generate packing slip PDF for orders."
					}
				},
				{
					"name": "Generate Shipping Label",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"orderIds\": [\"507f1f77bcf86cd799439014\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/orders/shipping-label",
							"host": ["{{base_url}}"],
							"path": ["orders", "shipping-label"]
						},
						"description": "Generate shipping label PDF for orders."
					}
				},
				{
					"name": "Generate Customer Invoice",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"orderIds\": [\"507f1f77bcf86cd799439014\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/orders/customer-invoice",
							"host": ["{{base_url}}"],
							"path": ["orders", "customer-invoice"]
						},
						"description": "Generate a customer-facing invoice PDF (no vendor payout info)."
					}
				},
				{
					"name": "Generate Grouped Invoice",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"startDate\": \"2025-01-01T00:00:00Z\",\n    \"endDate\": \"2025-01-31T23:59:59Z\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/orders/invoice/grouped",
							"host": ["{{base_url}}"],
							"path": ["orders", "invoice", "grouped"]
						},
						"description": "Generate a consolidated invoice for all orders within a date range."
					}
				}
			]
		},
		{
			"name": "Payouts",
			"description": "Payout listing, summaries, transactions, and pending items.",
			"item": [
				{
					"name": "List Payouts",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts?first=25",
							"host": ["{{base_url}}"],
							"path": ["payouts"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "status", "value": "paid", "disabled": true },
								{ "key": "fulfillment", "value": "fulfilled", "disabled": true },
								{ "key": "dateMin", "value": "", "disabled": true },
								{ "key": "dateMax", "value": "", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List individual payout line items with pagination."
					}
				},
				{
					"name": "Get Payout",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/507f1f77bcf86cd799439020",
							"host": ["{{base_url}}"],
							"path": ["payouts", "507f1f77bcf86cd799439020"]
						},
						"description": "Get a single payout line item by ID."
					}
				},
				{
					"name": "Get Payout Summary",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/summary",
							"host": ["{{base_url}}"],
							"path": ["payouts", "summary"],
							"query": [
								{ "key": "dateMin", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "dateMax", "value": "2025-12-31T23:59:59Z", "disabled": true }
							]
						},
						"description": "Get aggregated payout summary: totalReceived, totalPending, totalScheduled, previousPayout, nextPayout."
					}
				},
				{
					"name": "List Transactions",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/transactions?first=25",
							"host": ["{{base_url}}"],
							"path": ["payouts", "transactions"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "status", "value": "", "disabled": true },
								{ "key": "dateMin", "value": "", "disabled": true },
								{ "key": "dateMax", "value": "", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List payout transactions (one row per payout batch) with aggregated line item counts."
					}
				},
				{
					"name": "Get Batch Detail",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/batches/batch_abc123def456",
							"host": ["{{base_url}}"],
							"path": ["payouts", "batches", "batch_abc123def456"]
						},
						"description": "Get full breakdown of a single payout batch including gross/refund/adjustment details."
					}
				},
				{
					"name": "List Pending Payouts",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/pending?limit=100",
							"host": ["{{base_url}}"],
							"path": ["payouts", "pending"],
							"query": [
								{ "key": "limit", "value": "100" },
								{ "key": "offset", "value": "0", "disabled": true },
								{ "key": "dateMin", "value": "", "disabled": true },
								{ "key": "dateMax", "value": "", "disabled": true },
								{ "key": "lineItemType", "value": "", "disabled": true }
							]
						},
						"description": "List line items and custom adjustments going into the next payout cycle."
					}
				},
				{
					"name": "Export Pending Payouts (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/pending/export",
							"host": ["{{base_url}}"],
							"path": ["payouts", "pending", "export"],
							"query": [
								{ "key": "dateMin", "value": "", "disabled": true },
								{ "key": "dateMax", "value": "", "disabled": true }
							]
						},
						"description": "Export pending payout items as CSV. Filename: exported_pendingPayouts_vendor.csv."
					}
				},
				{
					"name": "Export Transactions (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/payouts/transactions/export",
							"host": ["{{base_url}}"],
							"path": ["payouts", "transactions", "export"],
							"query": [
								{ "key": "dateMin", "value": "", "disabled": true },
								{ "key": "dateMax", "value": "", "disabled": true },
								{ "key": "status", "value": "", "disabled": true }
							]
						},
						"description": "Export all matching payout transactions as CSV."
					}
				}
			]
		},
		{
			"name": "Dashboard",
			"description": "Dashboard metrics, charts, and top products.",
			"item": [
				{
					"name": "Get Overview",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/dashboard?range=30d",
							"host": ["{{base_url}}"],
							"path": ["dashboard"],
							"query": [
								{ "key": "range", "value": "30d" },
								{ "key": "dateStart", "value": "", "disabled": true },
								{ "key": "dateEnd", "value": "", "disabled": true }
							]
						},
						"description": "Get dashboard overview metrics. Vendor tokens get enhanced metrics (net sales, earnings)."
					}
				},
				{
					"name": "Get Enhanced Metrics",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/dashboard/enhanced",
							"host": ["{{base_url}}"],
							"path": ["dashboard", "enhanced"],
							"query": [
								{ "key": "dateStart", "value": "2025-01-01T00:00:00Z", "disabled": true },
								{ "key": "dateEnd", "value": "2025-06-30T23:59:59Z", "disabled": true }
							]
						},
						"description": "Get enhanced dashboard metrics (vendor-only). Includes net sales, earnings breakdown."
					}
				},
				{
					"name": "Get Chart Data",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/dashboard/chart?range=30d",
							"host": ["{{base_url}}"],
							"path": ["dashboard", "chart"],
							"query": [
								{ "key": "range", "value": "30d" },
								{ "key": "granularity", "value": "day", "disabled": true },
								{ "key": "dateStart", "value": "", "disabled": true },
								{ "key": "dateEnd", "value": "", "disabled": true }
							]
						},
						"description": "Get chart time-series data. Granularity auto-detected: day for <=90 days, month otherwise."
					}
				},
				{
					"name": "Get Top Products",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/dashboard/products/top?first=10",
							"host": ["{{base_url}}"],
							"path": ["dashboard", "products", "top"],
							"query": [
								{ "key": "first", "value": "10" },
								{ "key": "dateStart", "value": "", "disabled": true },
								{ "key": "dateEnd", "value": "", "disabled": true }
							]
						},
						"description": "Get top-selling products with quantity and revenue."
					}
				},
				{
					"name": "Export Top Products (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/dashboard/products/top/export",
							"host": ["{{base_url}}"],
							"path": ["dashboard", "products", "top", "export"],
							"query": [
								{ "key": "dateStart", "value": "", "disabled": true },
								{ "key": "dateEnd", "value": "", "disabled": true }
							]
						},
						"description": "Export top products as CSV download."
					}
				}
			]
		},
		{
			"name": "Customers",
			"description": "Customer listing and export based on order data.",
			"item": [
				{
					"name": "List Customers",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/customers?first=25",
							"host": ["{{base_url}}"],
							"path": ["customers"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "search", "value": "", "disabled": true },
								{ "key": "createdAtMin", "value": "", "disabled": true },
								{ "key": "createdAtMax", "value": "", "disabled": true }
							]
						},
						"description": "List unique customers derived from order data with pagination."
					}
				},
				{
					"name": "Export Customers (CSV)",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/customers/export",
							"host": ["{{base_url}}"],
							"path": ["customers", "export"],
							"query": [
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "Export all customers as CSV (up to 10,000 rows)."
					}
				}
			]
		},
		{
			"name": "Discounts",
			"description": "Discount code management scoped to vendor's Shopify collection.",
			"item": [
				{
					"name": "List Discounts",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/discounts?first=25&sortBy=updatedAt&sortOrder=desc",
							"host": ["{{base_url}}"],
							"path": ["discounts"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "sortBy", "value": "updatedAt" },
								{ "key": "sortOrder", "value": "desc" },
								{ "key": "status", "value": "active", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List discount codes. Vendor tokens are auto-scoped."
					}
				},
				{
					"name": "Create Discount",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"code\": \"SUMMER25\",\n    \"title\": \"Summer Sale 25% Off\",\n    \"startsAt\": \"2025-06-01T00:00:00Z\",\n    \"endsAt\": \"2025-08-31T23:59:59Z\",\n    \"customerGets\": {\n        \"value\": {\n            \"percentage\": 0.25\n        }\n    },\n    \"usageLimit\": 500,\n    \"appliesOncePerCustomer\": true\n}"
						},
						"url": {
							"raw": "{{base_url}}/discounts",
							"host": ["{{base_url}}"],
							"path": ["discounts"]
						},
						"description": "Create a discount code scoped to the vendor's Shopify collection. Vendor tokens only."
					}
				},
				{
					"name": "Update Discount",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"title\": \"Summer Sale 30% Off (Extended)\",\n    \"endsAt\": \"2025-09-30T23:59:59Z\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/discounts/64a1b2c3d4e5f60012340010",
							"host": ["{{base_url}}"],
							"path": ["discounts", "64a1b2c3d4e5f60012340010"]
						},
						"description": "Update an existing discount code."
					}
				},
				{
					"name": "Delete Discount",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/discounts/64a1b2c3d4e5f60012340010",
							"host": ["{{base_url}}"],
							"path": ["discounts", "64a1b2c3d4e5f60012340010"]
						},
						"description": "Delete a discount code from Shopify and local database."
					}
				},
				{
					"name": "Collection Health",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/discounts/collection-health",
							"host": ["{{base_url}}"],
							"path": ["discounts", "collection-health"]
						},
						"description": "Verify the vendor's smart collection still exists on Shopify. Returns status: ok, deleted, forbidden, or error."
					}
				}
			]
		},
		{
			"name": "Commissions",
			"description": "Commission rates at the vendor and SKU level.",
			"item": [
				{
					"name": "List Vendor Commissions",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/commissions/vendor?first=25",
							"host": ["{{base_url}}"],
							"path": ["commissions", "vendor"],
							"query": [
								{ "key": "first", "value": "25" }
							]
						},
						"description": "List vendor-level commission rates."
					}
				},
				{
					"name": "List SKU Commissions",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/commissions/sku?first=25",
							"host": ["{{base_url}}"],
							"path": ["commissions", "sku"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "sku", "value": "", "disabled": true },
								{ "key": "productId", "value": "", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List SKU-level commission rates that override vendor defaults."
					}
				},
				{
					"name": "Bulk Upsert SKU Commissions",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"commissions\": [\n        {\n            \"sku\": \"BTS-NB-S\",\n            \"rate\": 15,\n            \"type\": \"percentage\"\n        },\n        {\n            \"sku\": \"BTS-NB-M\",\n            \"rate\": 12.5,\n            \"type\": \"percentage\"\n        },\n        {\n            \"sku\": \"RS-001\",\n            \"rate\": 5,\n            \"type\": \"flat\"\n        }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/commissions/sku",
							"host": ["{{base_url}}"],
							"path": ["commissions", "sku"]
						},
						"description": "Create or update commission rates for multiple SKUs. Max 500 per request."
					}
				}
			]
		},
		{
			"name": "Shipping",
			"description": "Shipping rates, labels, dimensions, and carrier management.",
			"item": [
				{
					"name": "Get Rates",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"length\": 12,\n    \"width\": 8,\n    \"height\": 6,\n    \"weight\": 2.5,\n    \"weightunit\": \"lb\",\n    \"distanceunit\": \"in\",\n    \"orderNumber\": \"1042\",\n    \"lineItems\": [\"507f1f77bcf86cd799439015\"],\n    \"to_address\": {\n        \"name\": \"Jane Smith\",\n        \"street1\": \"456 Oak Avenue\",\n        \"city\": \"Los Angeles\",\n        \"state\": \"CA\",\n        \"zip\": \"90001\",\n        \"country\": \"US\"\n    },\n    \"from_address\": {\n        \"name\": \"Acme Widgets Warehouse\",\n        \"street1\": \"123 Main Street\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"zip\": \"10001\",\n        \"country\": \"US\"\n    }\n}"
						},
						"url": {
							"raw": "{{base_url}}/shipping/get-rates",
							"host": ["{{base_url}}"],
							"path": ["shipping", "get-rates"]
						},
						"description": "Get shipping rates from configured carriers (Shippo/ShipStation) for a parcel."
					}
				},
				{
					"name": "Purchase Label",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"orderNumber\": \"1042\",\n    \"lineItems\": [\"507f1f77bcf86cd799439015\"],\n    \"service_code\": \"usps_priority\",\n    \"shippingCarrier\": \"USPS\",\n    \"length\": 12,\n    \"width\": 8,\n    \"height\": 6,\n    \"weight\": 2.5,\n    \"weightunit\": \"lb\",\n    \"distanceunit\": \"in\",\n    \"to_address\": {\n        \"name\": \"Jane Smith\",\n        \"street1\": \"456 Oak Avenue\",\n        \"city\": \"Los Angeles\",\n        \"state\": \"CA\",\n        \"zip\": \"90001\",\n        \"country\": \"US\"\n    },\n    \"from_address\": {\n        \"name\": \"Acme Widgets Warehouse\",\n        \"street1\": \"123 Main Street\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"zip\": \"10001\",\n        \"country\": \"US\"\n    }\n}"
						},
						"url": {
							"raw": "{{base_url}}/shipping/purchase-label",
							"host": ["{{base_url}}"],
							"path": ["shipping", "purchase-label"]
						},
						"description": "Purchase a shipping label, create fulfillments, and update line items with tracking."
					}
				},
				{
					"name": "Generate Sample Label",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"lineItems\": [\"507f1f77bcf86cd799439015\"],\n    \"length\": 12,\n    \"width\": 8,\n    \"height\": 6,\n    \"weight\": 2.5,\n    \"weightunit\": \"lb\",\n    \"distanceunit\": \"in\",\n    \"to_address\": {\n        \"name\": \"Jane Smith\",\n        \"street1\": \"456 Oak Avenue\",\n        \"city\": \"Los Angeles\",\n        \"state\": \"CA\",\n        \"zip\": \"90001\",\n        \"country\": \"US\"\n    },\n    \"from_address\": {\n        \"name\": \"Acme Widgets Warehouse\",\n        \"street1\": \"123 Main Street\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"zip\": \"10001\",\n        \"country\": \"US\"\n    }\n}"
						},
						"url": {
							"raw": "{{base_url}}/shipping/generate-label",
							"host": ["{{base_url}}"],
							"path": ["shipping", "generate-label"]
						},
						"description": "Generate a sample/generic shipping label without purchasing."
					}
				},
				{
					"name": "List Dimensions",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/shipping/dimensions",
							"host": ["{{base_url}}"],
							"path": ["shipping", "dimensions"],
							"query": [
								{ "key": "type", "value": "generic", "disabled": true },
								{ "key": "productId", "value": "", "disabled": true }
							]
						},
						"description": "List saved package dimension presets."
					}
				},
				{
					"name": "Create Dimension",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"type\": \"generic\",\n    \"title\": \"Small Flat Rate Box\",\n    \"dimensionUnit\": \"in\",\n    \"lengthValue\": 8.625,\n    \"widthValue\": 5.375,\n    \"heightValue\": 1.625\n}"
						},
						"url": {
							"raw": "{{base_url}}/shipping/dimensions",
							"host": ["{{base_url}}"],
							"path": ["shipping", "dimensions"]
						},
						"description": "Create a saved package dimension preset."
					}
				},
				{
					"name": "Update Dimension",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"title\": \"Medium Flat Rate Box\",\n    \"lengthValue\": 11.25,\n    \"widthValue\": 8.75,\n    \"heightValue\": 6\n}"
						},
						"url": {
							"raw": "{{base_url}}/shipping/dimensions/64a1b2c3d4e5f60012340020",
							"host": ["{{base_url}}"],
							"path": ["shipping", "dimensions", "64a1b2c3d4e5f60012340020"]
						},
						"description": "Update a saved package dimension preset."
					}
				},
				{
					"name": "Get From Addresses",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/shipping/from-addresses",
							"host": ["{{base_url}}"],
							"path": ["shipping", "from-addresses"]
						},
						"description": "Get the vendor's from/return addresses for shipping."
					}
				},
				{
					"name": "Validate Address",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"addressLine1\": \"123 Main Street\",\n    \"addressLine2\": \"Suite 100\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"country\": \"US\",\n    \"pincode\": \"10001\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/shipping/validate-address",
							"host": ["{{base_url}}"],
							"path": ["shipping", "validate-address"]
						},
						"description": "Validate a shipping address via the configured carrier."
					}
				},
				{
					"name": "Get Shipping Carriers",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/shipping-carriers",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping-carriers"]
						},
						"description": "List supported shipping carriers and tracking URL templates."
					}
				}
			]
		},
		{
			"name": "Vendor Profile",
			"description": "Vendor profile and address management (self-service via /vendors/me).",
			"item": [
				{
					"name": "Get Profile",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/vendors/me/profile",
							"host": ["{{base_url}}"],
							"path": ["vendors", "me", "profile"]
						},
						"description": "Get the authenticated vendor's profile."
					}
				},
				{
					"name": "Update Profile",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"vendorName\": \"Acme Widgets Co.\",\n    \"reportingEmail\": \"reports@acme-widgets.com\",\n    \"phone\": \"+1-555-0100\",\n    \"website\": \"https://acme-widgets.com\",\n    \"description\": \"Premium widget manufacturer since 2015.\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/vendors/me/profile",
							"host": ["{{base_url}}"],
							"path": ["vendors", "me", "profile"]
						},
						"description": "Update the authenticated vendor's profile."
					}
				},
				{
					"name": "Get Address",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/vendors/me/address",
							"host": ["{{base_url}}"],
							"path": ["vendors", "me", "address"]
						},
						"description": "Get the authenticated vendor's address."
					}
				},
				{
					"name": "Update Address",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"address1\": \"123 Industrial Parkway\",\n    \"address2\": \"Building B\",\n    \"city\": \"Austin\",\n    \"province\": \"TX\",\n    \"country\": \"US\",\n    \"zip\": \"78701\",\n    \"phone\": \"+1-555-0101\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/vendors/me/address",
							"host": ["{{base_url}}"],
							"path": ["vendors", "me", "address"]
						},
						"description": "Update the authenticated vendor's address."
					}
				}
			]
		},
		{
			"name": "Account Settings",
			"description": "User account and profile settings (self-service).",
			"item": [
				{
					"name": "Get Account",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/accounts",
							"host": ["{{base_url}}"],
							"path": ["settings", "accounts"]
						},
						"description": "Get the authenticated user's account info (name, email, last login)."
					}
				},
				{
					"name": "Update Account",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"firstName\": \"John\",\n    \"lastName\": \"Doe\",\n    \"email\": \"john.doe@acme-widgets.com\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/accounts",
							"host": ["{{base_url}}"],
							"path": ["settings", "accounts"]
						},
						"description": "Update account info. For password changes, include currentPassword and confirmPassword."
					}
				},
				{
					"name": "Get Profile Settings",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/profile",
							"host": ["{{base_url}}"],
							"path": ["settings", "profile"]
						},
						"description": "Get the vendor's profile settings (editable fields configured by the merchant)."
					}
				},
				{
					"name": "Update Profile Settings",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"sections\": {\n        \"businessInfo\": {\n            \"businessName\": \"Acme Widgets International\",\n            \"businessLogo\": \"https://cdn.example.com/logos/acme.png\"\n        },\n        \"contactInfo\": {\n            \"phone\": \"+1-555-0200\",\n            \"website\": \"https://acme-widgets.com\"\n        }\n    }\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/profile",
							"host": ["{{base_url}}"],
							"path": ["settings", "profile"]
						},
						"description": "Update the vendor's profile settings."
					}
				}
			]
		},
		{
			"name": "Shipping Settings",
			"description": "Vendor shipping rate configuration and warehouse management.",
			"item": [
				{
					"name": "Get Rates",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/shipping/rates",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "rates"]
						},
						"description": "Get the vendor's shipping rate configuration (method, amount, ranges)."
					}
				},
				{
					"name": "Update Rates",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"method\": \"orderRange\",\n    \"ranges\": [\n        { \"from\": 0, \"to\": 50, \"rate\": 7.99 },\n        { \"from\": 50.01, \"to\": 100, \"rate\": 5.99 },\n        { \"from\": 100.01, \"to\": 999999, \"rate\": 0 }\n    ]\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/shipping/rates",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "rates"]
						},
						"description": "Update shipping rate configuration. Methods: order, lineItem, orderRange, orderWeight, realtime."
					}
				},
				{
					"name": "List Warehouses",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/shipping/warehouses",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "warehouses"]
						},
						"description": "List all warehouse/location records for the vendor."
					}
				},
				{
					"name": "Create Warehouse",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"East Coast Warehouse\",\n    \"address1\": \"789 Commerce Drive\",\n    \"city\": \"Newark\",\n    \"province\": \"NJ\",\n    \"country\": \"US\",\n    \"zip\": \"07102\",\n    \"phone\": \"+1-555-0300\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/shipping/warehouses",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "warehouses"]
						},
						"description": "Create a new warehouse/location for the vendor."
					}
				},
				{
					"name": "Get Warehouse",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/shipping/warehouses/64a1b2c3d4e5f60012340030",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "warehouses", "64a1b2c3d4e5f60012340030"]
						},
						"description": "Get a specific warehouse by ID."
					}
				},
				{
					"name": "Update Warehouse",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"name\": \"East Coast Warehouse (Primary)\",\n    \"phone\": \"+1-555-0301\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/shipping/warehouses/64a1b2c3d4e5f60012340030",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "warehouses", "64a1b2c3d4e5f60012340030"]
						},
						"description": "Update a warehouse record."
					}
				},
				{
					"name": "Delete Warehouse",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/shipping/warehouses/64a1b2c3d4e5f60012340030",
							"host": ["{{base_url}}"],
							"path": ["settings", "shipping", "warehouses", "64a1b2c3d4e5f60012340030"]
						},
						"description": "Delete a warehouse record."
					}
				}
			]
		},
		{
			"name": "Team Members",
			"description": "Vendor team member (staff user) management.",
			"item": [
				{
					"name": "List Team Members",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/team?first=25",
							"host": ["{{base_url}}"],
							"path": ["settings", "team"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List staff users for the authenticated vendor. Requires settings:team:read permission."
					}
				},
				{
					"name": "Create Team Member",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"firstName\": \"Sarah\",\n    \"lastName\": \"Johnson\",\n    \"email\": \"sarah.johnson@acme-widgets.com\",\n    \"password\": \"TempP@ss123!\",\n    \"permissions\": [\"orders:read\", \"products:read\", \"products:write\", \"fulfillments:read\", \"fulfillments:write\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/team",
							"host": ["{{base_url}}"],
							"path": ["settings", "team"]
						},
						"description": "Create a new staff user for the vendor."
					}
				},
				{
					"name": "Update Team Member",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"firstName\": \"Sarah\",\n    \"lastName\": \"Johnson-Smith\",\n    \"permissions\": [\"orders:read\", \"orders:write\", \"products:read\", \"products:write\", \"fulfillments:read\", \"fulfillments:write\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/team/507f1f77bcf86cd799439030",
							"host": ["{{base_url}}"],
							"path": ["settings", "team", "507f1f77bcf86cd799439030"]
						},
						"description": "Update a team member's name, email, or permissions."
					}
				},
				{
					"name": "Delete Team Member",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/team/507f1f77bcf86cd799439030",
							"host": ["{{base_url}}"],
							"path": ["settings", "team", "507f1f77bcf86cd799439030"]
						},
						"description": "Remove a team member from the vendor."
					}
				}
			]
		},
		{
			"name": "Users",
			"description": "User CRUD operations (merchant scope).",
			"item": [
				{
					"name": "List Users",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/users?first=25",
							"host": ["{{base_url}}"],
							"path": ["users"],
							"query": [
								{ "key": "first", "value": "25" },
								{ "key": "vendorId", "value": "", "disabled": true },
								{ "key": "type", "value": "vendor", "disabled": true },
								{ "key": "approved", "value": "true", "disabled": true },
								{ "key": "search", "value": "", "disabled": true }
							]
						},
						"description": "List users with pagination. Merchant scope only."
					}
				},
				{
					"name": "Create User",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"email\": \"newuser@acme-widgets.com\",\n    \"password\": \"SecureP@ss456!\",\n    \"firstName\": \"Michael\",\n    \"lastName\": \"Brown\",\n    \"type\": \"vendor\",\n    \"vendorId\": \"507f1f77bcf86cd799439011\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/users",
							"host": ["{{base_url}}"],
							"path": ["users"]
						},
						"description": "Create a new user. Merchant scope only."
					}
				},
				{
					"name": "Update User",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"firstName\": \"Michael\",\n    \"lastName\": \"Brown Jr.\",\n    \"approved\": true\n}"
						},
						"url": {
							"raw": "{{base_url}}/users/507f1f77bcf86cd799439035",
							"host": ["{{base_url}}"],
							"path": ["users", "507f1f77bcf86cd799439035"]
						},
						"description": "Update a user. Merchant scope only."
					}
				},
				{
					"name": "Delete User",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/users/507f1f77bcf86cd799439035",
							"host": ["{{base_url}}"],
							"path": ["users", "507f1f77bcf86cd799439035"]
						},
						"description": "Delete a user. Merchant scope only."
					}
				}
			]
		},
		{
			"name": "Integrations",
			"description": "Vendor integration configurations for payment and shipping providers.",
			"item": [
				{
					"name": "List Integrations",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations",
							"host": ["{{base_url}}"],
							"path": ["integrations"]
						},
						"description": "List available integrations grouped by category (payment, shipping)."
					}
				},
				{
					"name": "Get PayPal Integration",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/paypal",
							"host": ["{{base_url}}"],
							"path": ["integrations", "paypal"]
						},
						"description": "Get the vendor's PayPal integration configuration."
					}
				},
				{
					"name": "Update PayPal Integration",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"paypalEmail\": \"payments@acme-widgets.com\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/integrations/paypal",
							"host": ["{{base_url}}"],
							"path": ["integrations", "paypal"]
						},
						"description": "Update the vendor's PayPal integration settings."
					}
				},
				{
					"name": "Delete PayPal Integration",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/paypal",
							"host": ["{{base_url}}"],
							"path": ["integrations", "paypal"]
						},
						"description": "Disconnect the vendor's PayPal integration."
					}
				},
				{
					"name": "Get Stripe Integration",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/stripe",
							"host": ["{{base_url}}"],
							"path": ["integrations", "stripe"]
						},
						"description": "Get the vendor's Stripe Connect integration status."
					}
				},
				{
					"name": "Connect Stripe",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"authorizationCode\": \"ac_1234567890abcdef\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/integrations/stripe/connect",
							"host": ["{{base_url}}"],
							"path": ["integrations", "stripe", "connect"]
						},
						"description": "Connect the vendor's Stripe account using an OAuth authorization code."
					}
				},
				{
					"name": "Delete Stripe Integration",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/stripe",
							"host": ["{{base_url}}"],
							"path": ["integrations", "stripe"]
						},
						"description": "Disconnect the vendor's Stripe integration."
					}
				},
				{
					"name": "Get Shippo Integration",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/shippo",
							"host": ["{{base_url}}"],
							"path": ["integrations", "shippo"]
						},
						"description": "Get the vendor's Shippo integration configuration."
					}
				},
				{
					"name": "Update Shippo Integration",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"shippoToken\": \"shippo_live_abc123def456ghi789\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/integrations/shippo",
							"host": ["{{base_url}}"],
							"path": ["integrations", "shippo"]
						},
						"description": "Update the vendor's Shippo API token."
					}
				},
				{
					"name": "Delete Shippo Integration",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/shippo",
							"host": ["{{base_url}}"],
							"path": ["integrations", "shippo"]
						},
						"description": "Disconnect the vendor's Shippo integration."
					}
				},
				{
					"name": "Get ShipStation Integration",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/shipstation",
							"host": ["{{base_url}}"],
							"path": ["integrations", "shipstation"]
						},
						"description": "Get the vendor's ShipStation integration configuration."
					}
				},
				{
					"name": "Update ShipStation Integration",
					"request": {
						"method": "PUT",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"shipstationApiKey\": \"abc123def456\",\n    \"shipstationApiSecret\": \"secret789xyz\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/integrations/shipstation",
							"host": ["{{base_url}}"],
							"path": ["integrations", "shipstation"]
						},
						"description": "Update the vendor's ShipStation API credentials."
					}
				},
				{
					"name": "Delete ShipStation Integration",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/integrations/shipstation",
							"host": ["{{base_url}}"],
							"path": ["integrations", "shipstation"]
						},
						"description": "Disconnect the vendor's ShipStation integration."
					}
				}
			]
		},
		{
			"name": "API Keys",
			"description": "Vendor public API key management.",
			"item": [
				{
					"name": "List API Keys",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/public-api/keys",
							"host": ["{{base_url}}"],
							"path": ["settings", "public-api", "keys"]
						},
						"description": "List all vendor API keys (masked). The plaintext token is never returned."
					}
				},
				{
					"name": "Create API Key",
					"request": {
						"method": "POST",
						"header": [
							{ "key": "Content-Type", "value": "application/json" }
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"label\": \"Zapier Integration\",\n    \"scopes\": [\"orders:read\", \"products:read\", \"fulfillments:write\"]\n}"
						},
						"url": {
							"raw": "{{base_url}}/settings/public-api/keys",
							"host": ["{{base_url}}"],
							"path": ["settings", "public-api", "keys"]
						},
						"description": "Create a new API key. The plaintext token is returned ONCE and never retrievable again. Max 20 active keys."
					}
				},
				{
					"name": "Delete API Key",
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/public-api/keys/64a1b2c3d4e5f60012340050",
							"host": ["{{base_url}}"],
							"path": ["settings", "public-api", "keys", "64a1b2c3d4e5f60012340050"]
						},
						"description": "Revoke an API key."
					}
				},
				{
					"name": "Rotate API Key",
					"request": {
						"method": "POST",
						"header": [],
						"url": {
							"raw": "{{base_url}}/settings/public-api/keys/64a1b2c3d4e5f60012340050/rotate",
							"host": ["{{base_url}}"],
							"path": ["settings", "public-api", "keys", "64a1b2c3d4e5f60012340050", "rotate"]
						},
						"description": "Rotate an API key (revoke old + create new). Returns the new plaintext token once."
					}
				}
			]
		},
		{
			"name": "Shop",
			"description": "Shop configuration endpoints.",
			"item": [
				{
					"name": "Get Features",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/shop/features",
							"host": ["{{base_url}}"],
							"path": ["shop", "features"]
						},
						"description": "Get enabled shop features and capabilities."
					}
				},
				{
					"name": "Get Product Config",
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/shop/product-config",
							"host": ["{{base_url}}"],
							"path": ["shop", "product-config"]
						},
						"description": "Get product configuration including editable fields, required fields, and feature flags."
					}
				},
				{
					"name": "Get Signup Config",
					"request": {
						"auth": {
							"type": "noauth"
						},
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{base_url}}/shop/config/signup?shopIdentifier=acme-marketplace.myshopify.com",
							"host": ["{{base_url}}"],
							"path": ["shop", "config", "signup"],
							"query": [
								{ "key": "shopIdentifier", "value": "acme-marketplace.myshopify.com" }
							]
						},
						"description": "Get public signup configuration for a shop (no auth required). Returns fields, terms, and branding."
					}
				}
			]
		}
	]
}