{"openapi":"3.1.0","info":{"title":"OPC Suite API","description":"REST API for OPC Suite — an AI-powered all-in-one ERP & CRM. Authenticate with a bearer personal access token (opc_pat_…) or an OAuth 2.1 access token. All access is scoped and audit-logged. An MCP server is also available at /api/mcp for AI agents.","version":"1.0.0","contact":{"name":"OPC Suite Support","email":"support@tsa-ai.com","url":"https://www.myopc.io/developers"},"termsOfService":"https://www.myopc.io/terms"},"servers":[{"url":"https://www.myopc.io","description":"OPC Suite"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"tags":[{"name":"CRM","description":"Contacts, leads, deals, activities and notes."},{"name":"Sales","description":"Quotations and sales orders."},{"name":"Inventory","description":"Products, stock, suppliers and purchasing."},{"name":"Accounting","description":"Invoices and expense claims."},{"name":"HR","description":"Employees, leave and payroll."},{"name":"Work","description":"Projects, documents and agent tasks."}],"paths":{"/api/contacts":{"get":{"tags":["CRM"],"summary":"List contacts","operationId":"list_contacts","security":[{"bearerAuth":["contacts.read"]},{"oauth2":["contacts.read"]}],"parameters":[{"name":"q","in":"query","required":false,"description":"Search contacts by name/email/company.","schema":{"type":"string"}}],"responses":{"200":{"description":"A list of contacts.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["CRM"],"summary":"Create a contact","operationId":"create_contacts","security":[{"bearerAuth":["contacts.write"]},{"oauth2":["contacts.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created contact.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/contacts/{id}":{"get":{"tags":["CRM"],"summary":"Get a contact","operationId":"get_contacts","security":[{"bearerAuth":["contacts.read"]},{"oauth2":["contacts.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The contact ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested contact.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["CRM"],"summary":"Update a contact","operationId":"update_contacts","security":[{"bearerAuth":["contacts.write"]},{"oauth2":["contacts.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The contact ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated contact.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["CRM"],"summary":"Delete a contact","operationId":"delete_contacts","security":[{"bearerAuth":["contacts.write"]},{"oauth2":["contacts.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The contact ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The contact was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/leads":{"get":{"tags":["CRM"],"summary":"List leads","operationId":"list_leads","security":[{"bearerAuth":["leads.read"]},{"oauth2":["leads.read"]}],"parameters":[],"responses":{"200":{"description":"A list of leads.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["CRM"],"summary":"Create a lead","operationId":"create_leads","security":[{"bearerAuth":["leads.write"]},{"oauth2":["leads.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created lead.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/leads/{id}":{"get":{"tags":["CRM"],"summary":"Get a lead","operationId":"get_leads","security":[{"bearerAuth":["leads.read"]},{"oauth2":["leads.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The lead ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested lead.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["CRM"],"summary":"Update a lead","operationId":"update_leads","security":[{"bearerAuth":["leads.write"]},{"oauth2":["leads.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The lead ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated lead.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["CRM"],"summary":"Delete a lead","operationId":"delete_leads","security":[{"bearerAuth":["leads.write"]},{"oauth2":["leads.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The lead ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The lead was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/deals":{"get":{"tags":["CRM"],"summary":"List deals","operationId":"list_deals","security":[{"bearerAuth":["deals.read"]},{"oauth2":["deals.read"]}],"parameters":[],"responses":{"200":{"description":"A list of deals.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["CRM"],"summary":"Create a deal","operationId":"create_deals","security":[{"bearerAuth":["deals.write"]},{"oauth2":["deals.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created deal.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/deals/{id}":{"get":{"tags":["CRM"],"summary":"Get a deal","operationId":"get_deals","security":[{"bearerAuth":["deals.read"]},{"oauth2":["deals.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The deal ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested deal.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["CRM"],"summary":"Update a deal","operationId":"update_deals","security":[{"bearerAuth":["deals.write"]},{"oauth2":["deals.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The deal ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated deal.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["CRM"],"summary":"Delete a deal","operationId":"delete_deals","security":[{"bearerAuth":["deals.write"]},{"oauth2":["deals.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The deal ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The deal was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/activities":{"get":{"tags":["CRM"],"summary":"List activities","operationId":"list_activities","security":[{"bearerAuth":["activities.read"]},{"oauth2":["activities.read"]}],"parameters":[],"responses":{"200":{"description":"A list of activities.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["CRM"],"summary":"Create a activity","operationId":"create_activities","security":[{"bearerAuth":["activities.write"]},{"oauth2":["activities.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created activity.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/activities/{id}":{"get":{"tags":["CRM"],"summary":"Get a activity","operationId":"get_activities","security":[{"bearerAuth":["activities.read"]},{"oauth2":["activities.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The activity ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested activity.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["CRM"],"summary":"Update a activity","operationId":"update_activities","security":[{"bearerAuth":["activities.write"]},{"oauth2":["activities.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The activity ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated activity.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["CRM"],"summary":"Delete a activity","operationId":"delete_activities","security":[{"bearerAuth":["activities.write"]},{"oauth2":["activities.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The activity ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The activity was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/notes":{"get":{"tags":["CRM"],"summary":"List notes","operationId":"list_notes","security":[{"bearerAuth":["notes.read"]},{"oauth2":["notes.read"]}],"parameters":[],"responses":{"200":{"description":"A list of notes.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["CRM"],"summary":"Create a note","operationId":"create_notes","security":[{"bearerAuth":["notes.write"]},{"oauth2":["notes.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created note.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/notes/{id}":{"get":{"tags":["CRM"],"summary":"Get a note","operationId":"get_notes","security":[{"bearerAuth":["notes.read"]},{"oauth2":["notes.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The note ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested note.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["CRM"],"summary":"Update a note","operationId":"update_notes","security":[{"bearerAuth":["notes.write"]},{"oauth2":["notes.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The note ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated note.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["CRM"],"summary":"Delete a note","operationId":"delete_notes","security":[{"bearerAuth":["notes.write"]},{"oauth2":["notes.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The note ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The note was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/products":{"get":{"tags":["Inventory"],"summary":"List products","operationId":"list_products","security":[{"bearerAuth":["products.read"]},{"oauth2":["products.read"]}],"parameters":[{"name":"q","in":"query","required":false,"description":"Search products by name/email/company.","schema":{"type":"string"}}],"responses":{"200":{"description":"A list of products.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Inventory"],"summary":"Create a product","operationId":"create_products","security":[{"bearerAuth":["products.write"]},{"oauth2":["products.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created product.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/products/{id}":{"get":{"tags":["Inventory"],"summary":"Get a product","operationId":"get_products","security":[{"bearerAuth":["products.read"]},{"oauth2":["products.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The product ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested product.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Inventory"],"summary":"Update a product","operationId":"update_products","security":[{"bearerAuth":["products.write"]},{"oauth2":["products.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The product ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated product.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Inventory"],"summary":"Delete a product","operationId":"delete_products","security":[{"bearerAuth":["products.write"]},{"oauth2":["products.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The product ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The product was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/inventory":{"get":{"tags":["Inventory"],"summary":"List inventory","operationId":"list_inventory","security":[{"bearerAuth":["inventory.read"]},{"oauth2":["inventory.read"]}],"parameters":[],"responses":{"200":{"description":"A list of inventory.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Inventory"],"summary":"Create a inventory item","operationId":"create_inventory","security":[{"bearerAuth":["inventory.write"]},{"oauth2":["inventory.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created inventory item.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/inventory/{id}":{"get":{"tags":["Inventory"],"summary":"Get a inventory item","operationId":"get_inventory","security":[{"bearerAuth":["inventory.read"]},{"oauth2":["inventory.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The inventory item ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested inventory item.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Inventory"],"summary":"Update a inventory item","operationId":"update_inventory","security":[{"bearerAuth":["inventory.write"]},{"oauth2":["inventory.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The inventory item ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated inventory item.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Inventory"],"summary":"Delete a inventory item","operationId":"delete_inventory","security":[{"bearerAuth":["inventory.write"]},{"oauth2":["inventory.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The inventory item ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The inventory item was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/suppliers":{"get":{"tags":["Inventory"],"summary":"List suppliers","operationId":"list_suppliers","security":[{"bearerAuth":["suppliers.read"]},{"oauth2":["suppliers.read"]}],"parameters":[],"responses":{"200":{"description":"A list of suppliers.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Inventory"],"summary":"Create a supplier","operationId":"create_suppliers","security":[{"bearerAuth":["suppliers.write"]},{"oauth2":["suppliers.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created supplier.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/suppliers/{id}":{"get":{"tags":["Inventory"],"summary":"Get a supplier","operationId":"get_suppliers","security":[{"bearerAuth":["suppliers.read"]},{"oauth2":["suppliers.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The supplier ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested supplier.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Inventory"],"summary":"Update a supplier","operationId":"update_suppliers","security":[{"bearerAuth":["suppliers.write"]},{"oauth2":["suppliers.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The supplier ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated supplier.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Inventory"],"summary":"Delete a supplier","operationId":"delete_suppliers","security":[{"bearerAuth":["suppliers.write"]},{"oauth2":["suppliers.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The supplier ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The supplier was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/purchases":{"get":{"tags":["Inventory"],"summary":"List purchases","operationId":"list_purchases","security":[{"bearerAuth":["purchases.read"]},{"oauth2":["purchases.read"]}],"parameters":[],"responses":{"200":{"description":"A list of purchases.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Inventory"],"summary":"Create a purchase order","operationId":"create_purchases","security":[{"bearerAuth":["purchases.write"]},{"oauth2":["purchases.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created purchase order.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/purchases/{id}":{"get":{"tags":["Inventory"],"summary":"Get a purchase order","operationId":"get_purchases","security":[{"bearerAuth":["purchases.read"]},{"oauth2":["purchases.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The purchase order ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested purchase order.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Inventory"],"summary":"Update a purchase order","operationId":"update_purchases","security":[{"bearerAuth":["purchases.write"]},{"oauth2":["purchases.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The purchase order ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated purchase order.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Inventory"],"summary":"Delete a purchase order","operationId":"delete_purchases","security":[{"bearerAuth":["purchases.write"]},{"oauth2":["purchases.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The purchase order ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The purchase order was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/quotations":{"get":{"tags":["Sales"],"summary":"List quotations","operationId":"list_quotations","security":[{"bearerAuth":["quotations.read"]},{"oauth2":["quotations.read"]}],"parameters":[],"responses":{"200":{"description":"A list of quotations.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Sales"],"summary":"Create a quotation","operationId":"create_quotations","security":[{"bearerAuth":["quotations.write"]},{"oauth2":["quotations.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created quotation.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/quotations/{id}":{"get":{"tags":["Sales"],"summary":"Get a quotation","operationId":"get_quotations","security":[{"bearerAuth":["quotations.read"]},{"oauth2":["quotations.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The quotation ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested quotation.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Sales"],"summary":"Update a quotation","operationId":"update_quotations","security":[{"bearerAuth":["quotations.write"]},{"oauth2":["quotations.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The quotation ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated quotation.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Sales"],"summary":"Delete a quotation","operationId":"delete_quotations","security":[{"bearerAuth":["quotations.write"]},{"oauth2":["quotations.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The quotation ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The quotation was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/sales-orders":{"get":{"tags":["Sales"],"summary":"List sales-orders","operationId":"list_sales","security":[{"bearerAuth":["sales.read"]},{"oauth2":["sales.read"]}],"parameters":[],"responses":{"200":{"description":"A list of sales-orders.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Sales"],"summary":"Create a sales order","operationId":"create_sales","security":[{"bearerAuth":["sales.write"]},{"oauth2":["sales.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created sales order.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/sales-orders/{id}":{"get":{"tags":["Sales"],"summary":"Get a sales order","operationId":"get_sales","security":[{"bearerAuth":["sales.read"]},{"oauth2":["sales.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The sales order ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested sales order.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Sales"],"summary":"Update a sales order","operationId":"update_sales","security":[{"bearerAuth":["sales.write"]},{"oauth2":["sales.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The sales order ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated sales order.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Sales"],"summary":"Delete a sales order","operationId":"delete_sales","security":[{"bearerAuth":["sales.write"]},{"oauth2":["sales.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The sales order ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The sales order was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/invoices":{"get":{"tags":["Accounting"],"summary":"List invoices","operationId":"list_accounting","security":[{"bearerAuth":["accounting.read"]},{"oauth2":["accounting.read"]}],"parameters":[],"responses":{"200":{"description":"A list of invoices.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Accounting"],"summary":"Create a invoice","operationId":"create_accounting","security":[{"bearerAuth":["accounting.write"]},{"oauth2":["accounting.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created invoice.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/invoices/{id}":{"get":{"tags":["Accounting"],"summary":"Get a invoice","operationId":"get_accounting","security":[{"bearerAuth":["accounting.read"]},{"oauth2":["accounting.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The invoice ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested invoice.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Accounting"],"summary":"Update a invoice","operationId":"update_accounting","security":[{"bearerAuth":["accounting.write"]},{"oauth2":["accounting.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The invoice ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated invoice.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Accounting"],"summary":"Delete a invoice","operationId":"delete_accounting","security":[{"bearerAuth":["accounting.write"]},{"oauth2":["accounting.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The invoice ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The invoice was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/claims":{"get":{"tags":["Accounting"],"summary":"List claims","operationId":"list_claims","security":[{"bearerAuth":["claims.read"]},{"oauth2":["claims.read"]}],"parameters":[],"responses":{"200":{"description":"A list of claims.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Accounting"],"summary":"Create a expense claim","operationId":"create_claims","security":[{"bearerAuth":["claims.write"]},{"oauth2":["claims.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created expense claim.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/claims/{id}":{"get":{"tags":["Accounting"],"summary":"Get a expense claim","operationId":"get_claims","security":[{"bearerAuth":["claims.read"]},{"oauth2":["claims.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The expense claim ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested expense claim.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Accounting"],"summary":"Update a expense claim","operationId":"update_claims","security":[{"bearerAuth":["claims.write"]},{"oauth2":["claims.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The expense claim ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated expense claim.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Accounting"],"summary":"Delete a expense claim","operationId":"delete_claims","security":[{"bearerAuth":["claims.write"]},{"oauth2":["claims.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The expense claim ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The expense claim was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/projects":{"get":{"tags":["Work"],"summary":"List projects","operationId":"list_projects","security":[{"bearerAuth":["projects.read"]},{"oauth2":["projects.read"]}],"parameters":[],"responses":{"200":{"description":"A list of projects.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Work"],"summary":"Create a project","operationId":"create_projects","security":[{"bearerAuth":["projects.write"]},{"oauth2":["projects.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created project.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/projects/{id}":{"get":{"tags":["Work"],"summary":"Get a project","operationId":"get_projects","security":[{"bearerAuth":["projects.read"]},{"oauth2":["projects.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested project.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Work"],"summary":"Update a project","operationId":"update_projects","security":[{"bearerAuth":["projects.write"]},{"oauth2":["projects.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The project ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated project.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Work"],"summary":"Delete a project","operationId":"delete_projects","security":[{"bearerAuth":["projects.write"]},{"oauth2":["projects.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The project ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The project was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/documents":{"get":{"tags":["Work"],"summary":"List documents","operationId":"list_documents","security":[{"bearerAuth":["documents.read"]},{"oauth2":["documents.read"]}],"parameters":[],"responses":{"200":{"description":"A list of documents.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Work"],"summary":"Create a document","operationId":"create_documents","security":[{"bearerAuth":["documents.write"]},{"oauth2":["documents.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created document.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/documents/{id}":{"get":{"tags":["Work"],"summary":"Get a document","operationId":"get_documents","security":[{"bearerAuth":["documents.read"]},{"oauth2":["documents.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The document ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested document.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Work"],"summary":"Update a document","operationId":"update_documents","security":[{"bearerAuth":["documents.write"]},{"oauth2":["documents.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The document ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated document.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Work"],"summary":"Delete a document","operationId":"delete_documents","security":[{"bearerAuth":["documents.write"]},{"oauth2":["documents.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The document ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The document was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/agent-tasks":{"get":{"tags":["Work"],"summary":"List agent-tasks","operationId":"list_agent-tasks","security":[{"bearerAuth":["agent-tasks.read"]},{"oauth2":["agent-tasks.read"]}],"parameters":[],"responses":{"200":{"description":"A list of agent-tasks.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["Work"],"summary":"Create a agent task","operationId":"create_agent-tasks","security":[{"bearerAuth":["agent-tasks.write"]},{"oauth2":["agent-tasks.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created agent task.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/agent-tasks/{id}":{"get":{"tags":["Work"],"summary":"Get a agent task","operationId":"get_agent-tasks","security":[{"bearerAuth":["agent-tasks.read"]},{"oauth2":["agent-tasks.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The agent task ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested agent task.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["Work"],"summary":"Update a agent task","operationId":"update_agent-tasks","security":[{"bearerAuth":["agent-tasks.write"]},{"oauth2":["agent-tasks.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The agent task ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated agent task.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["Work"],"summary":"Delete a agent task","operationId":"delete_agent-tasks","security":[{"bearerAuth":["agent-tasks.write"]},{"oauth2":["agent-tasks.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The agent task ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The agent task was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}},"/api/hrm/employees":{"get":{"tags":["HR"],"summary":"List hrm/employees","operationId":"list_hrm","security":[{"bearerAuth":["hrm.read"]},{"oauth2":["hrm.read"]}],"parameters":[],"responses":{"200":{"description":"A list of hrm/employees.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}},"post":{"tags":["HR"],"summary":"Create a employee","operationId":"create_hrm","security":[{"bearerAuth":["hrm.write"]},{"oauth2":["hrm.write"]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The created employee.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/SubscriptionRequired"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/api/hrm/employees/{id}":{"get":{"tags":["HR"],"summary":"Get a employee","operationId":"get_hrm","security":[{"bearerAuth":["hrm.read"]},{"oauth2":["hrm.read"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The employee ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The requested employee.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"patch":{"tags":["HR"],"summary":"Update a employee","operationId":"update_hrm","security":[{"bearerAuth":["hrm.write"]},{"oauth2":["hrm.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The employee ID.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"The updated employee.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}},"delete":{"tags":["HR"],"summary":"Delete a employee","operationId":"delete_hrm","security":[{"bearerAuth":["hrm.write"]},{"oauth2":["hrm.write"]}],"parameters":[{"name":"id","in":"path","required":true,"description":"The employee ID.","schema":{"type":"string"}}],"responses":{"200":{"description":"The employee was deleted."},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Not found."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Personal access token (opc_pat_…) from /dashboard/settings/developer."},"oauth2":{"type":"oauth2","description":"OAuth 2.1 authorization code + PKCE.","flows":{"authorizationCode":{"authorizationUrl":"https://www.myopc.io/oauth/authorize","tokenUrl":"https://www.myopc.io/oauth/token","scopes":{}}}}},"responses":{"Unauthorized":{"description":"Missing or invalid credentials.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"Forbidden":{"description":"The token lacks the required scope.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"SubscriptionRequired":{"description":"The account's subscription is not active.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}}}}}