{"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 inbound uses a separate shared Bearer from configuration."},"servers":[{"url":"https://www.flowscmc.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"}}}},"/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"}}}}},"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"}}}}