{"openapi":"3.0.3","info":{"title":"FlowSCMC REST API","version":"1.0","description":"Bearer token (Sanctum) for most endpoints. Optional header X-Company-Id for company scope. eTSM and MDM inbound integrations use separate shared Bearer tokens from configuration."},"servers":[{"url":"https://nou.master-data.ro/api","description":"API base"}],"tags":[{"name":"Auth"},{"name":"Articles"},{"name":"Stock"},{"name":"Sales orders"},{"name":"Purchase orders"},{"name":"Receptions"},{"name":"Returns"},{"name":"Webhooks"},{"name":"Reference"},{"name":"Integrations"}],"paths":{"/health":{"get":{"tags":["Reference"],"summary":"Health check","responses":{"200":{"description":"OK"}}}},"/auth/token":{"post":{"tags":["Auth"],"summary":"Create API token","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"}}}}}},"responses":{"200":{"description":"Token issued"},"422":{"description":"Validation error"}}}},"/auth/revoke":{"post":{"tags":["Auth"],"summary":"Revoke current token","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Revoked"}}}},"/companies":{"get":{"tags":["Reference"],"summary":"Accessible companies","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK"}}}},"/articles/sync":{"get":{"tags":["Articles"],"summary":"Incremental article sync","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"updated_since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"cursor","in":"query","schema":{"type":"integer","default":0}},{"name":"per_page","in":"query","schema":{"type":"integer","default":100,"maximum":500}}],"responses":{"200":{"description":"data + meta.next_cursor"}}}},"/articles":{"get":{"tags":["Articles"],"summary":"List articles","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"search","in":"query","schema":{"type":"string"}},{"name":"per_page","in":"query","schema":{"type":"integer","default":25,"maximum":100}},{"name":"page","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Paginated list"}}},"post":{"tags":["Articles"],"summary":"Create article","security":[{"bearerAuth":[]},{"companyId":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["article_code","description","um3pl"],"properties":{"id":{"type":"integer"},"article_code":{"type":"string"},"description":{"type":"string"},"um3pl":{"type":"string"},"integer_only_um3pl_quantity":{"type":"boolean"},"integer_only":{"type":"boolean","description":"Optional alias for integer_only_um3pl_quantity."},"active":{"type":"boolean"},"client_3pl_id":{"type":"integer"}}}}}},"responses":{"201":{"description":"Created"},"422":{"description":"Validation"}}}},"/articles/{id}":{"get":{"tags":["Articles"],"summary":"Get article","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}},"put":{"tags":["Articles"],"summary":"Update article","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string"},"um3pl":{"type":"string"},"integer_only_um3pl_quantity":{"type":"boolean"},"integer_only":{"type":"boolean"},"um3pl_barcode":{"type":"string","nullable":true},"active":{"type":"boolean"}}}}}},"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/articles/by-code/{articleCode}":{"patch":{"tags":["Articles"],"summary":"Partial update article by code","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"articleCode","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"barcode":{"type":"string","nullable":true},"um3pl":{"type":"string"},"active":{"type":"boolean"}}}}}},"responses":{"200":{"description":"OK"},"404":{"description":"Not found"},"422":{"description":"Validation"}}}},"/stock":{"get":{"tags":["Stock"],"summary":"List stock","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}}},"/sales-orders":{"get":{"tags":["Sales orders"],"summary":"List sales orders","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["Sales orders"],"summary":"Create sales order","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"201":{"description":"Created"}}}},"/sales-orders/{id}":{"get":{"tags":["Sales orders"],"summary":"Get sales order","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["Sales orders"],"summary":"Update sales order","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/purchase-orders":{"get":{"tags":["Purchase orders"],"summary":"List purchase orders","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["Purchase orders"],"summary":"Create purchase order","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"201":{"description":"Created"}}}},"/purchase-orders/{id}":{"get":{"tags":["Purchase orders"],"summary":"Get purchase order","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["Purchase orders"],"summary":"Update purchase order","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/receptions":{"get":{"tags":["Receptions"],"summary":"List receptions","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["Receptions"],"summary":"Create reception","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"201":{"description":"Created"}}}},"/receptions/{id}":{"get":{"tags":["Receptions"],"summary":"Get reception","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["Receptions"],"summary":"Update reception","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/returns":{"get":{"tags":["Returns"],"summary":"List returns","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["Returns"],"summary":"Create return","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"201":{"description":"Created"}}}},"/returns/{id}":{"get":{"tags":["Returns"],"summary":"Get return","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/webhooks":{"get":{"tags":["Webhooks"],"summary":"List webhooks","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}},"post":{"tags":["Webhooks"],"summary":"Create webhook","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"201":{"description":"Created"}}}},"/webhooks/{id}":{"get":{"tags":["Webhooks"],"summary":"Get webhook","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"put":{"tags":["Webhooks"],"summary":"Update webhook","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}},"delete":{"tags":["Webhooks"],"summary":"Delete webhook","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Deleted"}}}},"/clients":{"get":{"tags":["Reference"],"summary":"List clients","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}}},"/clients/{id}":{"get":{"tags":["Reference"],"summary":"Get client","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/partners":{"get":{"tags":["Reference"],"summary":"List partners","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}}},"/partners/{id}":{"get":{"tags":["Reference"],"summary":"Get partner","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/warehouses":{"get":{"tags":["Reference"],"summary":"List warehouses","security":[{"bearerAuth":[]},{"companyId":[]}],"responses":{"200":{"description":"OK"}}}},"/warehouses/{warehouseId}":{"get":{"tags":["Reference"],"summary":"Get warehouse","security":[{"bearerAuth":[]},{"companyId":[]}],"parameters":[{"name":"warehouseId","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK"}}}},"/integrations/etsm/ping":{"get":{"tags":["Integrations"],"summary":"eTSM ping","security":[{"etsmBearer":[]}],"responses":{"200":{"description":"OK"},"503":{"description":"Token not configured"}}}},"/integrations/etsm/receptions":{"post":{"tags":["Integrations"],"summary":"eTSM create reception","security":[{"etsmBearer":[]},{"companyId":[]}],"responses":{"201":{"description":"Created"}}}},"/integrations/mdm/ping":{"get":{"tags":["Integrations"],"summary":"MDM ping","security":[{"mdmBearer":[]}],"responses":{"200":{"description":"OK"},"503":{"description":"Token not configured"}}}},"/integrations/mdm/sync-fields":{"get":{"tags":["Integrations"],"summary":"MDM syncable fields and aliases","security":[{"mdmBearer":[]}],"responses":{"200":{"description":"fields + aliases"}}}},"/integrations/mdm/clients/{client3plId}/articles":{"get":{"tags":["Integrations"],"summary":"MDM list articles for a client company","security":[{"mdmBearer":[]}],"parameters":[{"name":"client3plId","in":"path","required":true,"schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer","default":500,"maximum":1000}}],"responses":{"200":{"description":"ok + articles"}}}},"/integrations/mdm/articles/by-code/{articleCode}":{"patch":{"tags":["Integrations"],"summary":"MDM partial update article by code","security":[{"mdmBearer":[]},{"companyId":[]}],"parameters":[{"name":"articleCode","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"barcode":{"type":"string","nullable":true},"um3pl":{"type":"string"},"active":{"type":"boolean"}}}}}},"responses":{"200":{"description":"OK"},"400":{"description":"X-Company-Id required"},"404":{"description":"Not found"},"422":{"description":"Validation"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Laravel Sanctum personal access token"},"companyId":{"type":"apiKey","in":"header","name":"X-Company-Id","description":"3PL client company id (required for most write operations and article sync scoping)."},"etsmBearer":{"type":"http","scheme":"bearer","description":"Shared token from ETSM_INBOUND_BEARER_TOKEN"},"mdmBearer":{"type":"http","scheme":"bearer","description":"Shared token from MDM_INBOUND_BEARER_TOKEN (MDM \u2192 flowSCMC inbound)"}}}}