{"openapi":"3.1.0","info":{"title":"PipeStock Pro tenant API manifest","version":"wave-1","description":"PipeStock Pro API-shaped implementation manifest generated from the production data contract for Riverbend Plumbing Supply. It is a build handoff for replacing seeded demo data with tenant-scoped persistence, import dry-runs, workflow actions, and product events."},"servers":[{"url":"https://plumbing-supply.ideas-realized.com","description":"PipeStock Pro sales-demo subdomain"},{"url":"https://plumbing-supply.ideas-realized.com","description":"Riverbend Plumbing Supply production tenant target"}],"tags":[{"name":"Tenant records","description":"Tenant-scoped record reads, searches, workflow actions, and approvals."},{"name":"Import dry-run","description":"Buyer source-data validation before writeback or production cutover."},{"name":"Product events","description":"Operational and analytics events used for launch proof, support, and attribution."}],"paths":{"/api/demo-tenants/plumbing-supply/products":{"get":{"operationId":"getPlumbingSupplyProducts","summary":"List, search, and filter products records for the tenant workspace.","description":"List, search, and filter products records for the tenant workspace. Owner: Branch operations manager. Status: ready.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Branch operations manager","x-demo-status":"ready","responses":{"200":{"description":"Tenant-scoped products records.","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","description":"Products"}},"nextCursor":{"type":"string","description":"Opaque pagination cursor."}}}}}}}}},"/api/demo-tenants/plumbing-supply/products/actions":{"post":{"operationId":"postPlumbingSupplyProductsActions","summary":"Apply workflow updates, approvals, notes, and status changes for products.","description":"Apply workflow updates, approvals, notes, and status changes for products. Owner: Branch operations manager. Status: template.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Branch operations manager","x-demo-status":"template","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionRequest"}}}},"responses":{"200":{"description":"WorkflowActionResponse response.","content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionResponse"}}}}}}},"/api/demo-tenants/plumbing-supply/purchase-orders":{"get":{"operationId":"getPlumbingSupplyPurchaseOrders","summary":"List, search, and filter purchase orders records for the tenant workspace.","description":"List, search, and filter purchase orders records for the tenant workspace. Owner: Purchasing lead. Status: template.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Purchasing lead","x-demo-status":"template","responses":{"200":{"description":"Tenant-scoped purchase orders records.","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","description":"PurchaseOrders"}},"nextCursor":{"type":"string","description":"Opaque pagination cursor."}}}}}}}}},"/api/demo-tenants/plumbing-supply/purchase-orders/actions":{"post":{"operationId":"postPlumbingSupplyPurchaseOrdersActions","summary":"Apply workflow updates, approvals, notes, and status changes for purchase orders.","description":"Apply workflow updates, approvals, notes, and status changes for purchase orders. Owner: Purchasing lead. Status: template.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Purchasing lead","x-demo-status":"template","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionRequest"}}}},"responses":{"200":{"description":"WorkflowActionResponse response.","content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionResponse"}}}}}}},"/api/demo-tenants/plumbing-supply/receiving-discrepancies":{"get":{"operationId":"getPlumbingSupplyReceivingDiscrepancies","summary":"List, search, and filter receiving discrepancies records for the tenant workspace.","description":"List, search, and filter receiving discrepancies records for the tenant workspace. Owner: Inside sales lead. Status: needs-client.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Inside sales lead","x-demo-status":"needs-client","responses":{"200":{"description":"Tenant-scoped receiving discrepancies records.","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","description":"ReceivingDiscrepancies"}},"nextCursor":{"type":"string","description":"Opaque pagination cursor."}}}}}}}}},"/api/demo-tenants/plumbing-supply/receiving-discrepancies/actions":{"post":{"operationId":"postPlumbingSupplyReceivingDiscrepanciesActions","summary":"Apply workflow updates, approvals, notes, and status changes for receiving discrepancies.","description":"Apply workflow updates, approvals, notes, and status changes for receiving discrepancies. Owner: Inside sales lead. Status: needs-client.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Inside sales lead","x-demo-status":"needs-client","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionRequest"}}}},"responses":{"200":{"description":"WorkflowActionResponse response.","content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionResponse"}}}}}}},"/api/demo-tenants/plumbing-supply/stock-movements":{"get":{"operationId":"getPlumbingSupplyStockMovements","summary":"List, search, and filter stock movements records for the tenant workspace.","description":"List, search, and filter stock movements records for the tenant workspace. Owner: Branch operations manager. Status: ready.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Branch operations manager","x-demo-status":"ready","responses":{"200":{"description":"Tenant-scoped stock movements records.","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","description":"StockMovements"}},"nextCursor":{"type":"string","description":"Opaque pagination cursor."}}}}}}}}},"/api/demo-tenants/plumbing-supply/stock-movements/actions":{"post":{"operationId":"postPlumbingSupplyStockMovementsActions","summary":"Apply workflow updates, approvals, notes, and status changes for stock movements.","description":"Apply workflow updates, approvals, notes, and status changes for stock movements. Owner: Branch operations manager. Status: template.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Branch operations manager","x-demo-status":"template","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionRequest"}}}},"responses":{"200":{"description":"WorkflowActionResponse response.","content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionResponse"}}}}}}},"/api/demo-tenants/plumbing-supply/will-call-orders":{"get":{"operationId":"getPlumbingSupplyWillCallOrders","summary":"List, search, and filter will-call orders records for the tenant workspace.","description":"List, search, and filter will-call orders records for the tenant workspace. Owner: Purchasing lead. Status: template.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Purchasing lead","x-demo-status":"template","responses":{"200":{"description":"Tenant-scoped will-call orders records.","content":{"application/json":{"schema":{"type":"object","properties":{"records":{"type":"array","items":{"type":"object","description":"WillCallOrders"}},"nextCursor":{"type":"string","description":"Opaque pagination cursor."}}}}}}}}},"/api/demo-tenants/plumbing-supply/will-call-orders/actions":{"post":{"operationId":"postPlumbingSupplyWillCallOrdersActions","summary":"Apply workflow updates, approvals, notes, and status changes for will-call orders.","description":"Apply workflow updates, approvals, notes, and status changes for will-call orders. Owner: Purchasing lead. Status: template.","tags":["Tenant records"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Purchasing lead","x-demo-status":"template","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionRequest"}}}},"responses":{"200":{"description":"WorkflowActionResponse response.","content":{"application/json":{"schema":{"type":"object","description":"WorkflowActionResponse"}}}}}}},"/api/demo-tenants/plumbing-supply/imports/dry-run":{"post":{"operationId":"postPlumbingSupplyImportsDryRun","summary":"Validate 3 buyer source group(s), return row exceptions, and hold writeback until acceptance.","description":"Validate 3 buyer source group(s), return row exceptions, and hold writeback until acceptance. Owner: Branch operations manager. Status: needs-client.","tags":["Import dry-run"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Branch operations manager","x-demo-status":"needs-client","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"ImportDryRunRequest"}}}},"responses":{"200":{"description":"ImportDryRunResponse response.","content":{"application/json":{"schema":{"type":"object","description":"ImportDryRunResponse"}}}}}}},"/api/demo-tenants/plumbing-supply/events":{"get":{"operationId":"getPlumbingSupplyEvents","summary":"Expose product events for Branch exceptions reviewed before ERP posting, conversion attribution, and support review.","description":"Expose product events for Branch exceptions reviewed before ERP posting, conversion attribution, and support review. Owner: Growth lead. Status: template.","tags":["Product events"],"parameters":[{"name":"x-demo-tenant","in":"header","required":true,"description":"Tenant key for Riverbend Plumbing Supply.","schema":{"type":"string","enum":["plumbing-supply"]}}],"x-demo-owner":"Growth lead","x-demo-status":"template","responses":{"200":{"description":"Product events for launch proof, attribution, and support review.","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","description":"ProductEvent"}}}}}}}}}}},"components":{"schemas":{"Products":{"type":"object","description":"SKU, name, category, supplier, bin, on hand, reorder point, price, status.","required":["id","tenantId","status","updatedAt"],"properties":{"id":{"type":"string","description":"Tenant-scoped record identifier."},"tenantId":{"type":"string","description":"Tenant boundary identifier."},"status":{"type":"string","description":"Launch status from the data contract: ready."},"owner":{"type":"string","description":"Branch operations manager"},"sourceSystem":{"type":"string","description":"SKU master"},"updatedAt":{"type":"string","description":"ISO timestamp for the latest imported or workflow update."},"productSku":{"type":"string","description":"Product.sku from SKU master."},"productDescription":{"type":"string","description":"Product.description from SKU master."},"inventorylocationBin":{"type":"string","description":"InventoryLocation.bin from SKU master."},"inventorybalanceOnhand":{"type":"string","description":"InventoryBalance.onHand from SKU master."}}},"PurchaseOrders":{"type":"object","description":"Supplier, ETA, line count, value, receipt status, delay state.","required":["id","tenantId","status","updatedAt"],"properties":{"id":{"type":"string","description":"Tenant-scoped record identifier."},"tenantId":{"type":"string","description":"Tenant boundary identifier."},"status":{"type":"string","description":"Launch status from the data contract: template."},"owner":{"type":"string","description":"Purchasing lead"},"sourceSystem":{"type":"string","description":"Supplier and reorder file"},"updatedAt":{"type":"string","description":"ISO timestamp for the latest imported or workflow update."},"supplierName":{"type":"string","description":"Supplier.name from Supplier and reorder file."},"productReorderpoint":{"type":"string","description":"Product.reorderPoint from Supplier and reorder file."},"supplierLeadtimedays":{"type":"string","description":"Supplier.leadTimeDays from Supplier and reorder file."}}},"ReceivingDiscrepancies":{"type":"object","description":"PO line issue, expected vs received quantity, supplier response, claim status, and export readiness.","required":["id","tenantId","status","updatedAt"],"properties":{"id":{"type":"string","description":"Tenant-scoped record identifier."},"tenantId":{"type":"string","description":"Tenant boundary identifier."},"status":{"type":"string","description":"Launch status from the data contract: needs-client."},"owner":{"type":"string","description":"Inside sales lead"},"sourceSystem":{"type":"string","description":"Will-call queue"},"updatedAt":{"type":"string","description":"ISO timestamp for the latest imported or workflow update."},"willcallOrdernumber":{"type":"string","description":"WillCall.orderNumber from Will-call queue."},"willcalllineProductid":{"type":"string","description":"WillCallLine.productId from Will-call queue."},"willcallStatus":{"type":"string","description":"WillCall.status from Will-call queue."}}},"StockMovements":{"type":"object","description":"Reservations, receipts, cycle counts, counter sales, transfers.","required":["id","tenantId","status","updatedAt"],"properties":{"id":{"type":"string","description":"Tenant-scoped record identifier."},"tenantId":{"type":"string","description":"Tenant boundary identifier."},"status":{"type":"string","description":"Launch status from the data contract: ready."},"owner":{"type":"string","description":"Branch operations manager"},"sourceSystem":{"type":"string","description":"SKU master"},"updatedAt":{"type":"string","description":"ISO timestamp for the latest imported or workflow update."},"productSku":{"type":"string","description":"Product.sku from SKU master."},"productDescription":{"type":"string","description":"Product.description from SKU master."},"inventorylocationBin":{"type":"string","description":"InventoryLocation.bin from SKU master."},"inventorybalanceOnhand":{"type":"string","description":"InventoryBalance.onHand from SKU master."}}},"WillCallOrders":{"type":"object","description":"Customer, order ID, item summary, promised time, readiness status.","required":["id","tenantId","status","updatedAt"],"properties":{"id":{"type":"string","description":"Tenant-scoped record identifier."},"tenantId":{"type":"string","description":"Tenant boundary identifier."},"status":{"type":"string","description":"Launch status from the data contract: template."},"owner":{"type":"string","description":"Purchasing lead"},"sourceSystem":{"type":"string","description":"Supplier and reorder file"},"updatedAt":{"type":"string","description":"ISO timestamp for the latest imported or workflow update."},"supplierName":{"type":"string","description":"Supplier.name from Supplier and reorder file."},"productReorderpoint":{"type":"string","description":"Product.reorderPoint from Supplier and reorder file."},"supplierLeadtimedays":{"type":"string","description":"Supplier.leadTimeDays from Supplier and reorder file."}}},"ImportDryRunRequest":{"type":"object","required":["sourceName","rows"],"properties":{"sourceName":{"type":"string","description":"Buyer source group from the data import plan."},"rows":{"type":"array","description":"Preview rows supplied by the buyer before writeback.","items":{"type":"object","additionalProperties":{"type":"string"}}}}},"ImportDryRunResponse":{"type":"object","required":["acceptedRows","rejectedRows","exceptions"],"properties":{"acceptedRows":{"type":"number","description":"Rows passing validation."},"rejectedRows":{"type":"number","description":"Rows blocked from writeback."},"exceptions":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number"},"field":{"type":"string"},"severity":{"type":"string"},"resolution":{"type":"string"}}}}}},"WorkflowActionRequest":{"type":"object","required":["action","actorId"],"properties":{"action":{"type":"string","description":"Workflow action, approval, note, or status update."},"actorId":{"type":"string","description":"Authenticated user applying the change."},"notes":{"type":"string","description":"Optional operational note."},"payload":{"type":"object","additionalProperties":{"type":"string"}}}},"WorkflowActionResponse":{"type":"object","required":["accepted","eventId"],"properties":{"accepted":{"type":"boolean","description":"Whether the action was accepted for the tenant record."},"eventId":{"type":"string","description":"Generated product event identifier."},"nextStatus":{"type":"string","description":"Next visible workflow status."}}},"ProductEvent":{"type":"object","required":["id","name","occurredAt"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"occurredAt":{"type":"string"},"destination":{"type":"string"},"successSignal":{"type":"string"}}}}},"externalDocs":{"description":"PipeStock Pro canonical product and implementation handoff page","url":"/demo-library/plumbing-supply"},"x-demo-library":{"kind":"demo-openapi-spec","version":"wave-1","sourceDemo":{"slug":"plumbing-supply","title":"Plumbing Supply Inventory","archetype":"A1","canonicalPath":"/demo-library/plumbing-supply","appPath":"/demo-apps/plumbing-supply","subdomain":"plumbing-supply.ideas-realized.com"},"implementationManifest":{"openApiSpecPath":"/demo-library/plumbing-supply/openapi.json","productionDataContractJsonPath":"/demo-library/plumbing-supply/data-contract.json","sampleDataPackageJsonPath":"/demo-library/plumbing-supply/sample-data-package.json","whiteLabelRebrandKitJsonPath":"/demo-library/plumbing-supply/white-label-kit.json","tenantClonePackageJsonPath":"/demo-library/plumbing-supply/tenant-clone-package.json","canonicalPage":"/demo-library/plumbing-supply","appPath":"/demo-apps/plumbing-supply","tenantHeader":"x-demo-tenant"},"counts":{"pathCount":12,"operationCount":12,"schemaCount":10,"entityCount":5,"sourceCount":3,"eventCount":4},"generatedFrom":[{"label":"Production data contract JSON","href":"/demo-library/plumbing-supply/data-contract.json"},{"label":"Sample data package JSON","href":"/demo-library/plumbing-supply/sample-data-package.json"},{"label":"White-label kit JSON","href":"/demo-library/plumbing-supply/white-label-kit.json"},{"label":"Tenant clone package JSON","href":"/demo-library/plumbing-supply/tenant-clone-package.json"}]}}